OpenCV 3.2.0 HoughLinesP返回越界线(C ++)

时间:2017-06-20 19:04:54

标签: c++ opencv hough-transform

我一直在尝试检测实时网络摄像头图像中的某些线条(边缘),因此我尝试使用C ++版本的OpenCV 3.2.0进行canny边缘检测,然后进行hough变换。

因为使用HoughLinesP看起来很简单,所以不应该有任何问题,但似乎我无法使其发挥作用。

问题是应该包含检测到的行的矢量输出充满了数百万的垃圾结果

这就是我打电话给HoughLinesP的方式:

vector<Vec4i> lines;
HoughLinesP(cannyd, lines, 1, CV_PI/180.0, 100, 100, 10);

然后尝试输出检测到的行,如:

for (size_t i = 0; i < lines.size(); i++) {
    Vec4i l = lines[i];
    printf("line: %d %d %d %d\n", l[0], l[1], l[2], l[3]);
}

但我得到大约3-4百万行(检测后向量的大小)!其中大多数是(0,0,0,0)。其他一些检测到的行看起来像这样:

line: 0 0 1161992204 -1946150912
line: 2000556868 1404 17730960 17730984
line: 17730968 17447528 2 2000558912
line: 0 0 0 0
line: 1163630597 -2147477248 0 17736008
line: 0 0 32 17736008
line: 0 1684957559 30575 0
line: 0 0 1163171842 -2147476992

这是完全奇怪的,因为输入图像的大小为640 * 480,这些数字几乎不正确。

感谢您的帮助

编辑:发布更多代码(根据@ Alexander的建议)

VideoCapture cap;
cap.open(0);
cap >> image;
cvtColor(image, gray, CV_BGR2GRAY);
blur(gray, gray, Size(3, 3));
Canny(gray, cannyd, 50, 150, 3);
// This is where above-mentioned Hough codes run 

0 个答案:

没有答案