按位运算抠图的方法(opencv-python)

 时间:2026-02-22 11:42:24

1、粗暴的裁剪,并不能去掉第二幅图的背景:

import cv2

a = cv2.imread('a.png')

b = cv2.imread('d.png')

r,c,ch = b.shape

a[0:r,0:c] = b

按位运算抠图的方法(opencv-python)

2、第二幅图片比第一幅图片小,我先从第一幅图的左上角裁出一部分,使之与第二幅图大小一样:

rh = a[0:r,0:c]

按位运算抠图的方法(opencv-python)

3、把第二幅图变成灰度图:

g = cv2.cvtColor(b,cv2.COLOR_BGR2GRAY)

按位运算抠图的方法(opencv-python)

4、然后把灰度图二值化:

ret, mask = cv2.threshold(g, 220, 255, cv2.THRESH_BINARY)

其中,220到255表示二值处理的阈值,这个数值需要自己尝试,目的是尽量把背景和前景完整的分离开来。

比如:

ret, mask = cv2.threshold(g, 190, 255, cv2.THRESH_BINARY)

分离效果不好。

按位运算抠图的方法(opencv-python)

5、从rh里面抠出一个LOGO的轮廓:

x = cv2.bitwise_and(rh,rh,mask = mask)

按位运算抠图的方法(opencv-python)

6、从第二幅图里面抠出LOGO标志:

y = cv2.bitwise_and(b,b,mask = cv2.bitwise_not(mask))

扣得不太完整。

按位运算抠图的方法(opencv-python)

7、x+y

按位运算抠图的方法(opencv-python)

8、这样就算成功了:

a[0:r,0:c] = x+y

按位运算抠图的方法(opencv-python)

  • 易语言之去除重复文本
  • 如何用PLSQL登录Oracle数据库
  • jqgrid如何动态设置列的显示和隐藏
  • 图表工具FineReport中下拉框参数联动如何设置
  • Tomcat服务器安装JKS格式SSL证书
  • 热门搜索
    电脑ip地址怎么看 怎么关闭防火墙 尿不尽是怎么回事 自我介绍用英语怎么说 怎么回事 子宫糜烂怎么治疗 怎么让视力恢复 求生之路2怎么联机 station怎么读 电子秤不准怎么调