import cv2
import numpy as np
import time
path = "/home/jayu/Desktop/openCv/"
imgpath1 = path + "img1.jpg"
imgpath2 = path + "img2.jpg"
img1 = cv2.imread(imgpath1,1)
img2 = cv2.imread(imgpath2,1)
print (img1.shape)
print (img2.shape)
for i in np.linspace(0,1,10):
alpha = i
beta = 1-alpha
output = cv2.addWeighted(img1,alpha,img2,beta,0)
cv2.imshow("hello",output)
time.sleep(0.10)
if cv2.waitKey(0)==27:
break
cv2.destroyAllWindows( )
当我尝试上面的代码时,我得到了错误:
output = cv2.addWeighted(img1,alpha,img2,beta,0)
cv2.error: /build/opencv-2TNgni/opencv-3.1.0+dfsg1/modules/core/src/arithm.cpp:639: error: (-209) The operation is neither 'array op array' (where arrays have the same size and the same number of channels), nor 'array op scalar', nor 'scalar op array' in function arithm_op
img1.shape:(183,275,3)和 img2.shape:(640,960,3)
我在这里错了什么?
答案 0 :(得分:2)
融合两个大小不同的图像没有意义。您可以:
调整其中一幅图像的大小以匹配另一幅图像的大小
resize(img2, img2, img1.size())
这将调整img2
的大小以匹配img1
在较小的图像中添加paddings,使其与较大图像的大小匹配。