当前位置: 首页 > news >正文

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

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

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

import randomimport cv2def 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_rgbaif __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添加的水印别怪我,看不出透明背景别怪我):

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

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

http://www.lryc.cn/news/495201.html

相关文章:

  • 三维渲染中顺序无关的半透明混合(OIT)(一Depth Peeling)
  • Linux零基础入门--Makefile和make--纯干货无废话!!
  • vim编辑器的一些配置和快捷键
  • 电子应用设计方案-31:智能AI音响系统方案设计
  • 【设计模式】【结构型模式(Structural Patterns)】之装饰模式(Decorator Pattern)
  • 【AI】JetsonNano启动时报错:soctherm OC ALARM
  • QT:生成二维码 QRCode
  • 【LeetCode刷题之路】120:三角形最小路径和的两种解法(动态规划优化)
  • 神经网络中常见的激活函数Sigmoid、Tanh和ReLU
  • 适用于学校、医院等低压用电场所的智能安全配电装置
  • 基于python爬虫的智慧人才数据分析系统
  • LeetCode-315. Count of Smaller Numbers After Self
  • 根据导数的定义计算导函数
  • WPF关于打开新窗口获取数据的回调方法的两种方式
  • 复杂网络(四)
  • 用MATLAB符号工具建立机器人的动力学模型
  • SQL优化与性能——数据库设计优化
  • FPGA存在的意义:为什么adc连续采样需要fpga来做,而不会直接用iic来实现
  • 我们来学mysql -- 事务之概念(原理篇)
  • 基于特征子空间的高维异常检测:一种高效且可解释的方法
  • 看不见的彼方:交换空间——小菜一碟
  • YOLO模型训练后的best.pt和last.pt区别
  • Pareidoscope - 语言结构关联工具
  • GPT(Generative Pre-trained Transformer) 和 Transformer的比较
  • 软件无线电(SDR)的架构及相关术语
  • Python将Excel文件转换为JSON文件
  • 排序算法之选择排序篇
  • sizeof和strlen区分,(好多例子)
  • A050-基于spring boot物流管理系统设计与实现
  • [自然语言处理] NLP-RNN及其变体-干货