2014-02-10 227 views
1

我想實現一個簡單的canny邊緣檢測器Canny邊緣檢測

爲了檢測臉部跟蹤器內的發線。

漸入facetracker

下面一行被註釋掉打破我的

程序的主循環,給這個錯誤信息之前:

在CVTest 0x7709c41f未處理的異常。 exe:Microsoft C++異常:cv ::內存位置異常0x004fb300 ..

cout << "Hair Line Detection ..."; 

Mat GrayFace; 

threshold(gray, GrayFace, 65, 255, CV_THRESH_BINARY); 

// Canny(GrayFace, GrayFace, 1, 150, 3, false); 

threshold(GrayFace, GrayFace, 254, 255, CV_THRESH_BINARY); 

Mat EdgeDetection; 

EdgeDetection = GrayFace; 

cout << "Done!" << endl; 

作爲初學者,我不知道爲什麼這條線打破了這個程序。

請問有人可以幫助我嗎?

謝謝,

+1

我不確定是否允許目標圖像與canny的源圖像相同。嘗試'cv :: Mat邊緣; Canny(GrayFace,邊緣,1,150,3,false);'代替。如果這沒有幫助,請嘗試使用'imshow(「GrayFace」,GrayFace);'看看您的Canny的輸入是否符合您的期望。 – Micka

+0

謝謝。實際上,這是我的第一個猜測,但顯然允許這兩個是相同的,根據該網址的第7部分:http://docs.opencv.org/doc/tutorials/imgproc/imgtrans/canny_detector/canny_detector .html – Joshua

+0

你能提供樣本圖片嗎? – Micka

回答

1

我剛注意到你有2個閾值線?一次設置兩次的目的是什麼? (因爲你對此有何評論精明的線)

更改

cv::threshold(gray, GrayFace, 65, 255, CV_THRESH_BINARY); 

cv::threshold(gray, GrayFace, 0, 255, CV_THRESH_BINARY | CV_THRESH_OTSU); 

讓我知道,如果現在的工作。使用cv::imshow("Test GrayFace", GrayFace);顯示新的結果。