python环境opencv通过掩码实现图片叠加(MASK)

 时间:2024-11-01 16:25:51

1、opencv学习中有时要完成两幅图片叠加,并且背景透明。,opencv提供了按位与或非的功能再结合MASK的使用。让叠加和ROI变得简单主要函数:cv.bitwise_and(roi, roi, mask=mask)cv.bitwise_and(pic,pic, mask=notmask)下图为生成结果

python环境opencv通过掩码实现图片叠加(MASK)

2、首先分别读入 两幅要叠加的图 把pic带入第一个。第二个大小要小于第一个 否则会失败。!import cv2 as cvimport numpy as npimport copyimage = cv.imread('c:\\meiping1.png')# cv.imshow("image", image)pic = cv.imread('c:\\dajiangdahe.png')cv.imshow("pic", pic)

python环境opencv通过掩码实现图片叠加(MASK)
python环境opencv通过掩码实现图片叠加(MASK)

3、设置要叠加的位置偏移量deltaxdeltaydeltax = 50deltay = 150rows, cols = pic.shape[:2]roi = image[deltax:rows+deltax, deltay:cols+deltay]print(roi)cv.imshow("roi", roi)生成兴趣点 ROI这是在第一个图里 根据输入坐标生成的。

python环境opencv通过掩码实现图片叠加(MASK)

4、gray = cv.cvtColor(pic, cv.COLOR_BGR2GRAY)转灰度 然后二值化! 这些内容前面已经介绍过了。此处略过解释ret, mask = cv.threshold(gray, 150, 255, cv.THRESH_BINARY)cv.imshow("mask", mask)掩码一般是白底黑字 或黑底白字

python环境opencv通过掩码实现图片叠加(MASK)

5、#与mask颜色相反此处变成黑底白字!notmask = cv.bitwise_not(mask)cv.imshow("notmask", notmask)

python环境opencv通过掩码实现图片叠加(MASK)

6、分别进行roi和第二个图像进行 mask操作注意mask=maskbackimage = cv.bitwise_and(roi, roi, mask=mask)cv.imshow("backimage", backimage)注意mask=notmaskfrontpic = cv.bitwise_and(pic,pic, mask=notmask)cv.imshow("frontpic", frontpic)注意此时backimage 已经是黑字 彩色背景

python环境opencv通过掩码实现图片叠加(MASK)
python环境opencv通过掩码实现图片叠加(MASK)

7、把两幅图叠加result = cv.add(backimage, frontpic)cv.imshow("result", result)注意此时ROI区域已经ok了。

python环境opencv通过掩码实现图片叠加(MASK)

8、image[deltax:rows+deltax, deltay:cols+deltay] = result# print()cv.imshow("image", image)最后把叠加的区域放到image[deltax:rows+deltax, deltay:cols+deltay]就好了!完美!

python环境opencv通过掩码实现图片叠加(MASK)
  • Mathematica数据可视化:[9]图形选项与样式 1
  • latex如何加粗正文,表格中的字体?
  • 如何打开ipynb文件
  • latex 花体字母希腊字母
  • Python编程:如何创建一个字典类型变量
  • 热门搜索
    抗击病毒的手抄报 手抄报版面设计模板 庆六一手抄报内容 廉政手抄报 亲子手抄报 关于孝的手抄报 地震手抄报 迎新春手抄报 孝敬父母的手抄报 初中生手抄报