0

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

这是原始图像原始图像
// 平滑图像

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;

但是问题是我仍然找不到任何行,这是处理后的图像 处理后的图像

从结果图像来看,我认为问题出在边缘的锯齿上,是吗?它会影响轮廓线吗?如何消除锯齿?

4

1 回答 1

0

如果这张图片在这里和你上传时一样大小:你的整个图片只有405x405,所以找一条400像素长的线有点多。您可以轻松摆脱最小值为 100 - 但如果您想要的只是构成正方形的外部 4 条线,我不会超过 350。

于 2013-09-04T21:06:09.400 回答