簡體   English   中英

使用OpenCV(Canny)進行邊緣檢測

[英]Edge detection using OpenCV (Canny)

我正在嘗試使用OpenCV檢測矩形。 但是,在運行Canny方法后,有時這會非常困難,因為通常會刪除其中兩條邊。 在應用Canny之前,我嘗試了許多不同的閾值並使其模糊,但我還沒有取得重大的積極成果。 目前,我並沒有模糊圖像,所以這正是我正在做的事情:

Mat imgSource = Highgui.imread(filepath);
Imgproc.Canny(imgSource, imgSource, 300, 600, 5, true); 

例:

原創http://imagizer.imageshack.us/a/img822/8776/27i9j.jpg Canny http://imagizer.imageshack.us/a/img841/9868/wkc95.jpg

然后,我正在嘗試OpenCV的findContours方法來檢測矩形,它有80%的時間工作,我該如何改進呢?

嘗試使用不同的閾值,在這種情況下,當使用較低的閾值(如10,100)時,您將獲得更好的結果。

blur(src,src,Size(3,3));
cvtColor(src,tmp,CV_BGR2GRAY);
Canny( src, thr, 10, 100, 3 );

或者以另一種方式,您將通過應用閾值來獲得輪廓圖像,

threshold(tmp,thr,50,255,THRESH_BINARY_INV);

這里的問題可能是圖像壓縮JPEG文件類型。
嘗試將圖像轉換為單色,因為您只有黑/白圖像並編輯閾值。
這應該消除線條邊緣周圍的噪音。 然后canny可以應用任何值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM