2011-08-29 5 views
0

내 플랫폼이 Mac OS X 10.6이며 python 2.7.2/opencv를 homebrew로 설치하십시오.cv.filter2D return TypeError

import cv 

src = cv.imread('img.jpg') 
dst = cv.CloneMat(src) 
kernel = cv.CreateMat(7, 7, cv.CV_32FC1) 

for i in range(-3, 4): 
    for j in range(-3, 4): 
     kernel[i+3, j+3] = L(i, 3) * L(j, 3) 

cv.filter2D(src, dst, kernel) 
cv.imshow(dst) 

내 문제가 cv.filter2D입니다 : 내가에는 Lanczos 리샘플링을 할 cv.filter2D를 사용하려면, 여기 내 코드입니다. 내가 OpenCV의 참조 설명서에 쓴

cv.filter2D(src, dst, kernel) 

를 사용하는 경우,이 오류 메시지가 표시됩니다.

파이썬에서
Traceback (most recent call last): 
    File "lanczos.py", line 27, in <module> 
    cv.filter2D(src, dst, kernel) 
TypeError: only length-1 arrays can be converted to Python scalars 

내가

cv.filter2D.__doc__ 

을 입력, 그것은 함수 프로토 타입은 내가

cv.filter2D(src, -1, kernel, dst) 

대신, 오류 메시지가 될 사용하는 경우

'filter2D(src, ddepth, kernel[, dst[, anchor[, delta[, borderType]]]]) -> dst' 

말했다

Traceback (most recent call last): 
    File "lanczos.py", line 27, in <module> 
    cv.filter2D(src, 1 , kernel, dst) 
TypeError: <unknown> is not a numpy array 

사람이 전에이 문제가 발생하지 않았습니까? 당신의 OpenCV의 버전이 무엇인지

답변

3

, 내 버전은 다음과 같습니다

>>> import cv2 as cv 
>>> cv.__version__ 
'$Rev: 4557 $' 

나는 커널로 ndarray을 사용할 수 있으며, 그 결과에 대한 빈 배열을 만들 필요가 없습니다, filter2D() 것이다 새 ndarray를 반환하십시오.

import cv2 as cv 
import numpy as np 
src = cv.imread('img.jpg') 
kernel = np.ones((7,7), dtype=np.float)/49.0 
dst = cv.filter2D(src, -1, kernel) 
cv.imwrite("result.jpg", dst) 
내가 모듈 이름 CV2이없는
+0

하지만, '$ 레브 : 3057 $'이다 version__ 내 이력서 .__ 내가 제대로 코드를 실행할 수 있습니다 이 문제를 보인다는 커널 형식입니다 –