openCV模糊图像

时间:2019-09-29 14:55:30

标签: python python-3.x

获取以下消息: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'

1 个答案:

答案 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 ++代码中的方法。