python opencv图像叠加/重合设置随意位置

Song4604 次浏览0个评论2019年01月15日

opencv图像叠加主要有三种方式:cv2.add(),cv2.addWeighted()按位运算,今天在使用图片叠加的过程中发现无法改变叠加图片的位置,后来查看具体文档才发现具体解决办法,总结一下。

cv2.add(),cv2.addWeighted()按位运算python OpenCV图像上的算术运算中都有介绍,我们主要讲一下按位运算

import cv2
import numpy as np
img1=cv2.imread('45.jpg')
img2=cv2.imread('messigray.png')

rows,cols,channels = img2.shape
roi = img1[0:rows,0:cols]

img2gray = cv2.cvtColor(img2,cv2.COLOR_BGR2GRAY)
ret,mask = cv2.threshold(img2gray,175,255,cv2.THRESH_BINARY)
mask_inv = cv2.bitwise_not(mask)

img1_bg = cv2.bitwise_and(roi,roi,mask=mask)
img2_fg = cv2.bitwise_and(img2,img2,mask=mask_inv)

dst = cv2.add(img1_bg,img2_fg)
img1[0:rows,0:cols] =dst

cv2.imshow('res',img1)
cv2.waitKey(0)
cv2.destroyAllWindows()

上方是官方的Demo,我在网上查询很久没有找到如何改标添加图片的文字,后续查看【python OpenCV 中文文档】图像的基本操作找到了解决办法,其实你可以改标ROI,但是对应场刊也要改,否则出现如下错误。

ValueError: could not broadcast input array from shape (600,1000,3) into shape (850,1000,3)

具体方法如下,上方官方代码的17行修改移动位置,你可以改变图像叠加的任意位置:

img1[100:rows+100,100:cols+100] =dst

提交评论

请登录后评论

用户评论

    当前暂无评价,快来发表您的观点吧...

更多相关好文

    当前暂无更多相关好文推荐...