使用OpenCV(Canny)进行边缘检测

Art*_*dio 9 java android opencv

我正在尝试使用OpenCV检测矩形.但是,有时在运行Canny方法后这会非常困难,因为其中两条边通常会被删除.在应用Canny之前,我尝试了许多不同的阈值并使其模糊,但我还没有取得重大的积极成果.目前,我并没有模糊图像,所以这正是我正在做的事情:

Mat imgSource = Highgui.imread(filepath);
Imgproc.Canny(imgSource, imgSource, 300, 600, 5, true); 
Run Code Online (Sandbox Code Playgroud)

例:

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

然后,我正在尝试使用OpenCV的findContours方法来检测矩形,它在80%的时间内工作,我该如何改进呢?

Har*_*ris 7

尝试使用不同的阈值,在这种情况下,当使用较低的阈值(如10,100)时,您将获得更好的结果.

blur(src,src,Size(3,3));
cvtColor(src,tmp,CV_BGR2GRAY);
Canny( src, thr, 10, 100, 3 );
Run Code Online (Sandbox Code Playgroud)

或者以另一种方式,您将通过应用阈值来获得轮廓图像 ,

threshold(tmp,thr,50,255,THRESH_BINARY_INV);
Run Code Online (Sandbox Code Playgroud)