首页 > 解决方案 > 尝试将图像与 openCV 混合

问题描述

图像 1 图像 2

img1 = cv.imread('face.png',1)
img2 = cv.imread('flower.png',1)
img2= cv.resize(img2,(642,640))
cv.imshow('img1',img1)
cv.imshow('img2',img2)
dst = cv.addWeighted(img1,0.7,img2,0.3,1)
cv.imshow('dst',dst)
cv.waitKey(0)
cv.destroyAllWindows()

给我这个

错误:OpenCV(4.2.0)../modules/core/src/arithm.cpp:666:错误:(-209:输入参数的大小不匹配)操作既不是“数组操作数组”(其中数组有相同的大小和相同的通道数),也不是函数'arithm_op'中的'array op scalar',也不是'scalar op array'

标签: pythonopencv

解决方案


它应该是:

img2= cv.resize(img2,(640,642))

原因是,当您检索图像形状时,它分别返回高度和宽度。

(h, w) = img.shape[:2]

然后分别使用宽度和高度调整第二张图像的大小。

img2 = cv.resize(img2, (w, h))

但是最好在使用 之前断言两个图像具有相同的形状,addWeighted以确保两个图像的形状相同。

assert img1.shape == img2.shape

结果:


在此处输入图像描述

代码:


import cv2 as cv

img1 = cv.imread('face.png', 1)
img2 = cv.imread('flower.png', 1)

(h, w) = img1.shape[:2]
img2 = cv.resize(img2, (w, h))

assert img1.shape == img2.shape

cv.imshow('img1', img1)
cv.imshow('img2', img2)

dst = cv.addWeighted(src1=img1, alpha=0.7, src2=img2, beta=0.3, gamma=1.0)

cv.imshow('dst', dst)
cv.waitKey(0)

cv.imwrite("dst.png", dst)

cv.destroyAllWindows()

推荐阅读