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

Song • 531次浏览 • 0个评论 • 2019-01-15 12:02:42

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
提交评论
要回复文章请先登录注册
用户评论
  • 没有评论
    公告
    中国晚上好,随时随地分享前沿科技,好吃好玩,有趣有料的新鲜事;本站可以分享资源,技术,观点,态度;同时希望大家做一个文明的分享者!
    广告
    pytorch中文网