我正在做一些圖像處理學習,我用新的C++ iterface使用openCV。OpenCV二進制圖像只得到白色像素不工作
我有一個RGB圖像,我讀了灰度版本,均衡直方圖,然後使用canny來檢測邊緣。
問題是:Canny函數返回灰度圖像還是二進制圖像? 我使用double for循環來檢查應用Canny邊緣檢測器得到的圖像中的像素值,並且我有許多完全不同的值。在二進制圖像必須只有兩個值0或1(0或255)...我該怎麼做?
我的代碼:
imagen = imread(nombre_imagen,0); //lee la imagen en escala de grises
equalizeHist(imagen,imagen);
Canny(binary,binary,0.66*threshold,1.33*threshold,3,true);
for(int i=0;i<binary.rows;i++){
for(int j=0;j<binary.cols;j++){
std::cout << binary.at<float>(i,j)<< ",";
}
std::cout << "\n";
}
這是一個183x183矩陣,我可以看到很多值甚至有些nan
的。 我該如何製作這個二進制文件?
對於Canny函數,我使用獲取灰度圖像的「平均值」的閾值;我在這裏看到它:http://www.kerrywong.com/2009/05/07/canny-edge-detection-auto-thresholding/。
是使用另一個墊子圖像的結果 – matiasfh 2011-03-15 23:06:39
這很奇怪。在我的程序中,我這樣使用它: 'cv :: Mat after; cv :: Canny(m_mImage,之後,50,120);' 它的功能完美。也許嘗試沒有L2gradient設置爲true。您是否檢查了您的閾值功能是否正常工作? – Yax 2011-03-16 18:01:16