【发布时间】:2019-10-09 05:57:13
【问题描述】:
我是计算机视觉的新手。所以我不知道以下代码的内部实现,因此我无法调试错误。谁能指出以下代码中的错误?
代码使用框过滤器和边缘检测核矩阵的组合将停车图像转换为二进制。然后我试图找到轮廓。 现在我知道轮廓是在二进制图像上找到的,可以使用 cv2.threshold() 函数导出,从过滤器和内核矩阵获得的图像不也是二进制图像吗?
import cv2
import numpy as np
import matplotlib.pyplot as plt
img=cv2.imread('parking spot1.jpg',1)
k3 = np.array(([-1,-1,-1],[-1,8,-1],[-1,-1,-1]))
low_filter = cv2.boxFilter(img, -1, (4,4))
output_low = cv2.filter2D(low_filter, -1, k3)
plt.subplot(2, 2, 1)
plt.imshow(img)
plt.title('Original Image')
plt.subplot(2, 2, 2)
plt.imshow(output_low)
plt.title('matrix1')
plt.show()
img, ret, heirarchy = cv2.findContours(output_low, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
你认为我做错了什么? 我真的很感激这个问题的解释或方向。
非常感谢。
我面临的错误是:
Traceback(最近一次调用最后一次) 在 () ----> 1 img, ret, heirarchy = cv2.findContours(output_low, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
错误: OpenCV(3.4.3) /io/opencv/modules/imgproc/src/contours.cpp:199: 错误: (-210: 不支持的格式或格式组合) [开始]FindContours 仅支持 CV_8UC1 图像时mode != CV_RETR_FLOODFILL 否则仅在函数 'cvStartFindContours_Impl
中支持 CV_32SC1 图像
【问题讨论】:
标签: opencv computer-vision convolution opencv-contour lowpass-filter