获取以下消息:TypeError: Expected Ptr<cv::UMat> for argument '%s'
我不知道为什么它不起作用。有什么想法吗?
# Load picture as a numpy array
import cv2
image = cv2 . imread ("beatles.jpg")
image = cv2 . cvtColor ( image , cv2 . COLOR_BGR2RGB )
# See that it is working
print (image)
cv2.imshow("Bilde", image)
cv2.waitKey (5000)
cv2.destroyAllWindows()
# Box Blur kernel
box_kernel = [[1 / 9, 1 / 9, 1 / 9], [1 / 9, 1 / 9, 1 / 9], [1 / 9, 1 / 9, 1 / 9]]
kernel = box_kernel
cv2.filter2D(image, -1, kernel)
TypeError: Expected Ptr<cv::UMat> for argument '%s'
答案 0 :(得分:0)
尝试使用
import numpy as np
box_kernel = np.array([[1 / 9, 1 / 9, 1 / 9], [1 / 9, 1 / 9, 1 / 9], [1 / 9, 1 / 9, 1 / 9]])
From the examples in the docs,看来您必须将内核作为numpy ndarray
。我怀疑这与以下事实有关:OpenCV是用C / C ++编写的,其中参数通过引用或指针而不是通过值传递到filter2D
中。在Python中,无法使用list
来做到这一点,但是numpy的ndarray
在后台使用C,而OpenCV的Python接口可能具有将其传递到C / C ++代码中的方法。