不玩PS抠图了,改玩Python抠图

网上找了两个苏轼的印章图片:

把这两个印章抠出来的话,对于不少PS高手来说是相当容易,但是要去掉其中的水印,可能要用仿制图章慢慢描绘,图章的边缘也要慢慢勾画或者用通道抠图之类来处理,而且印章的红色也不是很鲜亮,调整颜色也有点麻烦。弄个下面的Python程序,那就秒杀。

python 复制代码
import random

import cv2

def remove_background(image_path, red_threshold):
    """
    将图片中红色分量低于指定值的点全部变成透明

    :param image_path: 图片的路径
    :param red_threshold: 红色分量的阈值
    :return: 处理后的透明背景红色增强图片(numpy.ndarray类型)
    """
    # 读取图片
    image = cv2.imread(image_path)
    image_rgba = cv2.cvtColor(image, cv2.COLOR_BGR2RGBA)

    # 获取图片的高度、宽度和通道数
    height, width, channels = image.shape

    # 遍历图片中的每个像素点
    for i in range(height):
        for j in range(width):
            # 获取当前像素点的红色分量值
            red_value = image[i][j][2]

            # 如果红色分量值低于阈值,将该像素点变为透明
            if red_value < red_threshold:
                image_rgba[i][j] = [0, 0, 0, 0]
            else:
                # 考虑到现实中的红色未必都是纯红,生成一种随机的比较鲜艳的红色填充红色区域。这样水印自然消掉了
                red_value = random.randint(248, 255)
                green_value = random.randint(0, 8)
                blue_value = random.randint(0, 5)
                image_rgba[i][j] = [blue_value, green_value, red_value, 255]

    return image_rgba

if __name__ == '__main__':
    file_path = 'meiyang.jpg'
    image = remove_background(file_path, red_threshold=127)
    cv2.imwrite('meiyang.png', image)
    cv2.imshow('image', image)

    cv2.waitKey(0)
    cv2.destroyAllWindows()

抠图效果展示(右下角CSDN添加的水印别怪我,看不出透明背景别怪我):

其实只要前景色中没有混杂背景色,如果前景色和背景色差异较大或者转换为灰度图片后前景色与背景色灰度值相差明显,就可以稍微修改一下上面的代码将背景改成透明的,从而完成抠图。背景色不是纯黑纯白时可传入红绿蓝三个分量的阈值,转换为灰度图片后前景色与背景色灰度值相差明显时可先转换成灰度图片后二值化作为掩码图片,利用掩码图片消除原始图片上的背景。

话说苏东坡是白字先生,"士"字多刻了两笔🐶。

相关推荐
数据智能老司机1 小时前
精通 Python 设计模式——分布式系统模式
python·设计模式·架构
数据智能老司机2 小时前
精通 Python 设计模式——并发与异步模式
python·设计模式·编程语言
数据智能老司机2 小时前
精通 Python 设计模式——测试模式
python·设计模式·架构
数据智能老司机2 小时前
精通 Python 设计模式——性能模式
python·设计模式·架构
c8i2 小时前
drf初步梳理
python·django
每日AI新事件2 小时前
python的异步函数
python
这里有鱼汤3 小时前
miniQMT下载历史行情数据太慢怎么办?一招提速10倍!
前端·python
databook12 小时前
Manim实现脉冲闪烁特效
后端·python·动效
程序设计实验室13 小时前
2025年了,在 Django 之外,Python Web 框架还能怎么选?
python
倔强青铜三14 小时前
苦练Python第46天:文件写入与上下文管理器
人工智能·python·面试