这个是我自己在摸索过程中找到的一点心得,如果大家也出现了这样的问题,希望能帮到大家
g_can_out.copyTo(s_can);
cvtColor(g_can_out,s_gray,COLOR_BGR2GRAY);
threshold(s_gray,s_threshold,178,255,THRESH_BINARY);
vector<Vec4i>lines;
HoughLinesP(s_threshold,lines,1,CV_PI/180,100,50,20);
for(size_t i=0;i<lines.size();i++)
{
Vec4i p=lines[i];
line(g_can_out,Point(p[0],p[1]),Point(p[2],p[3]),Scalar(0,0,255),1,8);
}
imshow("zhixian",g_can_out);
上边是我工作的一部分内容,初次的时候我并不太怎么注意line函数里面g_can_out这个输出模板。我一开始认为随便找一个模板就行,哪怕是空的都行,但是事实是我错了,这个模板不应该乱用,必须用画直线所在的那个模板,也就是说你在那个模板上画直线,那么就填写那个模板,不然会出现这个问题
这是我发现的我的第一个问题,第二个问题就是下边的这个图片上的内容
如果在直线检测的过程中出现了这类问题,那么要做的就是在HoughLinesP(s_threshold,lines,1,CV_PI/180,100,50,20);
这个函数里对最后三个参数进行调整,要明白100,50,20 分别代表的什么意思,尽量多调几个值,不要用0,应该就能把出现的问题进行修正,希望能帮到大家!