2015-08-13 7 views
0

http://inside.mines.edu/~whoff/courses/EENG512/lectures/HoughInOpenCV.pdfХаф Трансформация OpenCV C++

Привет, я иду через учебник в формате PDF в ссылке выше.

У меня возникла проблема на стр. 6 слайдов.

Поскольку мы видим, что вывод кода после вставки изгибающего края детектора, он должен проследить все края на фотографии.

я не могу получить то, что показано на странице 6.

#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", imgInput); 
// wait for xx ms (0 means wait until keypress) 
waitKey(5000); 
return 0; 
} 

А также, есть строка double thresh = xxx;//try different values Какие ценности я должен поставить? и что означают значения?

Спасибо

ответ

3

Просто замените imshow функцию с,

imshow("My Image", imgContours);

и вы можете использовать thresh значение приблизительно вокруг 200.

Измените пороговое значение и увидите его эффект, и в соответствии с этим вы можете выбрать пороговое значение.

2

В imgContours ваш выход карты со всеми краями. Вы должны использовать imshow с imgContours.

#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

Смежные вопросы