我使用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;
然而问题是我仍然找不到任何行,这里是处理过的图像
从结果图像中,我认为问题是因为边缘出现锯齿,是吗?它是否影响houghline,如何删除别名?
答案 0 :(得分:0)
如果此图像与您上传时的图像大小相同:您的整个图像仅为405x405,因此寻找400像素长的图像有点多。你可以轻松逃脱最低点100 - 但如果你想要的只是制造广场的外部4条线,我就不会超过350。