Ошибка opencv: размеры входных аргументов не совпадают

im делать смешивание изображений с помощью пирамиды … m получить ошибку opencv .. im после официальных инструкций opencv. http://docs.opencv.org/3.0-beta/doc/py_tutorials/py_tutorials.html

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 

  • Веб-приложение Python с OpenCV в Heroku
  • Учитывая контур, описывающий края формы S в OpenCV / Python, какие методы можно использовать для прослеживания кривой вдоль центра фигуры?
  • Эквивалент copyTo в Python OpenCV привязки?
  • не может импортировать CV на OpenCV2.1
  • OpenCV для Python - AttributeError: объект 'module' не имеет атрибута 'connectedComponents'
  • Отображение подачи веб-камеры с использованием OpenCV и Python
  • Сравнение производительности интерфейсов OpenCV-Python, cv и cv2
  • Изображение обложки Opencv Python с использованием массива Numpy
  • One Solution collect form web for “Ошибка opencv: размеры входных аргументов не совпадают”

    Кажется, вы здесь не создаете свою гауссову пирамиду:

     # generate Gaussian pyramid for A G = A.copy() gpA = [G] for i in xrange(6): G = cv2.pyrDown(G) gpA.append(G) 

    Согласно документации OpenCV на cv2.pyrDown , если вы не укажете dstsize , по умолчанию будет ((src.cols+1)/2, (src.rows+1)/2) . НО, вы всегда понижаете дискретизацию на оригинальной копии G Если я берусь правильно, я думаю, что вы должны применить его на последнем изображении с уменьшенной дискретизацией:

     # generate Gaussian pyramid for A G = A.copy() gpA = [G] for i in xrange(6): G = cv2.pyrDown(gpA[i]) gpA.append(G) 

    Обидно, то же самое относится и к вашей пирамиде B.

    Теперь ваш скрипт будет работать, если ваши изображения имеют четную форму, но не с нечетной формой из-за того, как cv2.pyrDown вычисляет размер по умолчанию. В этом случае вам нужно предоставить cv2.pyrUp правильный параметр dstsize соответствии с изображением, которое вы используете для создания cv2.substract (или cv2.add ).

     # generate Laplacian Pyramid for A lpA = [gpA[5]] for i in xrange(5,0,-1): size = (gpA[i-1].shape[1], gpA[i-1].shape[0]) GE = cv2.pyrUp(gpA[i], dstsize = size) 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): size = (gpB[i-1].shape[1], gpB[i-1].shape[0]) GE = cv2.pyrUp(gpB[i], dstsize = size) L = cv2.subtract(gpB[i-1],GE) lpB.append(L) , # generate Laplacian Pyramid for A lpA = [gpA[5]] for i in xrange(5,0,-1): size = (gpA[i-1].shape[1], gpA[i-1].shape[0]) GE = cv2.pyrUp(gpA[i], dstsize = size) 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): size = (gpB[i-1].shape[1], gpB[i-1].shape[0]) GE = cv2.pyrUp(gpB[i], dstsize = size) L = cv2.subtract(gpB[i-1],GE) lpB.append(L) 

    Затем этот пункт относится и к части реконструкции:

     # now reconstruct ls_ = LS[0] for i in xrange(1,6): size = (LS[i].shape[1], LS[i].shape[0]) ls_ = cv2.pyrUp(ls_, dstsize = size) ls_ = cv2.add(ls_, LS[i]) 
    Python - лучший язык программирования в мире.