Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python cv.filter2D返回类型错误_Python_Opencv - Fatal编程技术网

Python cv.filter2D返回类型错误

Python cv.filter2D返回类型错误,python,opencv,Python,Opencv,我的平台是Mac OS X 10.6,通过自制程序安装python 2.7.2/opencv。 我想使用cv.filter2D进行Lanczos重采样,以下是我的代码: 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): kern

我的平台是Mac OS X 10.6,通过自制程序安装python 2.7.2/opencv。 我想使用cv.filter2D进行Lanczos重采样,以下是我的代码:

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。 如果我使用

cv.filter2D(src, dst, kernel) 
,它写在OpenCV参考手册中,它会得到错误消息

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
,它说功能原型是

'filter2D(src, ddepth, kernel[, dst[, anchor[, delta[, borderType]]]]) -> dst'
如果我使用

cv.filter2D(src, -1, kernel, 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
回溯(最近一次呼叫最后一次):
文件“lanczos.py”,第27行,在
cv.filter2D(src,1,内核,dst)
TypeError:不是numpy数组

似乎以前没有人遇到过这个问题?

您的opencv版本是什么,我的版本是:

>>> 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)

您的opencv版本是什么,我的版本是:

>>> 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的模块,但我的简历是“$Rev:3057$”我可以正确运行您的代码,似乎问题在于内核格式我没有名为cv2的模块,但我的简历是“$Rev:3057$”我可以正确运行您的代码,似乎问题在于内核格式