|
本帖最后由 神龙教 于 2018-10-13 10:17 编辑
我正在使用金字塔进行图像混合…然后却得到一个opencv错误,,正在学习官方的opencv教程
代码如下:
- import cv2
- import numpy as np,sys
- A = cv2.imread('/home/grayhat/apple.jpg')
- B = cv2.imread('/home/grayhat/orange.jpg')
- # generate Gaussian pyramid for A
- G = A.copy()
- gpA = [G]
- for i in xrange(6):
- G = cv2.pyrDown(G)
- gpA.append(G)
- # generate Gaussian pyramid for B
- G = B.copy()
- gpB = [G]
- for i in xrange(6):
- G = cv2.pyrDown(G)
- gpB.append(G)
- # generate Laplacian Pyramid for A
- lpA = [gpA[5]]
- for i in xrange(5,0,-1):
- GE = cv2.pyrUp(gpA[i])
- L = cv2.subtract(gpA[i-1],GE)
- lpA.append(L)
- # generate Laplacian Pyramid for B
- lpB = [gpB[5]]
- for i in xrange(5,0,-1):
- GE = cv2.pyrUp(gpB[i])
- L = cv2.subtract(gpB[i-1],GE)
- lpB.append(L)
- # Now add left and right halves of images in each level
- LS = []
- for la,lb in zip(lpA,lpB):
- rows,cols,dpt = la.shape
- ls = np.hstack((la[:,0:cols/2], lb[:,cols/2:]))
- LS.append(ls)
- # now reconstruct
- ls_ = LS[0]
- for i in xrange(1,6):
- ls_ = cv2.pyrUp(ls_)
- ls_ = cv2.add(ls_, LS[i])
- # image with direct connecting each half
- real = np.hstack((A[:,:cols/2],B[:,cols/2:]))
- cv2.imwrite('Pyramid_blending2.jpg',ls_)
- cv2.imwrite('Direct_blending.jpg',real)
复制代码 报的错误如下:
- OpenCV Error: Sizes of input arguments do not match (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 arithm_op, file /build/buildd/opencv-2.4.8+dfsg1/modules/core/src/arithm.cpp, line 1287
- Traceback (most recent call last):
- File "programs/test11.py", line 25, in <module>
- L = cv2.subtract(gpA[i-1],GE)
- cv2.error: /build/buildd/opencv-2.4.8+dfsg1/modules/core/src/arithm.cpp:1287: 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
复制代码 有木有可以帮忙解决的哇
|
|