由于别名,无法检测opencv中的行?

时间:2013-09-03 08:37:47

标签: opencv

我使用opencv来分析多选扫描仪,但首先我要将图像设为黑色&白色(二值化)和使用霍夫变换来查找图像中的线条。

这是原始图片The original image
//平滑图像

Mat img = imread(path,1);
if(img.empty()){
   cout << "no picture shown" <<endl;      
}   
cvtColor(img,img,CV_BGR2GRAY);
Size size(3,3);
GaussianBlur(img,another,size,0);
adaptiveThreshold(another,another,255,CV_ADAPTIVE_THRESH_MEAN_C,CV_THRESH_BINARY,75,10);
bitwise_not(another,another); 

//找到带有houghline的行

   vector<Vec4i> lines; 
   HoughLinesP(img,lines,1,CV_PI/180,80,400,10);
   cout << "line size : " << lines.size() << endl;

然而问题是我仍然找不到任何行,这里是处理过的图像 The processed image

从结果图像中,我认为问题是因为边缘出现锯齿,是吗?它是否影响houghline,如何删除别名?

1 个答案:

答案 0 :(得分:0)

如果此图像与您上传时的图像大小相同:您的整个图像仅为405x405,因此寻找400像素长的图像有点多。你可以轻松逃脱最低点100 - 但如果你想要的只是制造广场的外部4条线,我就不会超过350。