Hough Transformation OPENCV C ++

时间:2015-08-13 03:01:47

标签: c++ opencv hough-transform

http://inside.mines.edu/~whoff/courses/EENG512/lectures/HoughInOpenCV.pdf

嗨,我正在浏览上面链接中的pdf教程。

我在幻灯片的第6页遇到问题。

当我们看到插入canny边缘检测器后代码的输出时,它应该描绘出照片上的所有边缘。

我无法得到第6页显示的内容。

double thresh = xxx;//try different values

此外,还有一行 int seed = unchecked(System.DateTime.Now.Ticks.GetHashCode()); rand = new Random(seed); 我应该放什么价值?什么是价值观?

谢谢

2 个答案:

答案 0 :(得分:3)

只需将您的imshow功能替换为

即可

imshow("My Image", imgContours);

您可以使用大约thresh左右的200值。

更改阈值并查看其效果,并根据您可以选择您的阈值。

答案 1 :(得分:2)

imgContours是包含所有边缘的输出地图。你应该使用imgContours imshow。

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace std;
using namespace cv;

int main(int argc, char* argv[])
{
printf("Hello world\n");
// read an image
Mat imgInput = imread("a.png");
// create image window named "My Image"
namedWindow("My Image");

// Convert to gray if necessary
if (imgInput.channels() == 3)
    cv::cvtColor(imgInput, imgInput, CV_BGR2GRAY);

// Apply Canny edge detector
Mat imgContours;
double thresh = 105; // try different values to see effect
Canny(imgInput, imgContours, 0.4*thresh, thresh); // low, high threshold


// show the image on window
imshow("My Image", imgContours);
// wait for xx ms (0 means wait until keypress)
waitKey(5000);
return 0;
}

参考:

http://docs.opencv.org/modules/imgproc/doc/feature_detection.html?highlight=canny#canny