opencv 直线检测,不能检测到理想的线段,求指导~!!!!!!

lines=cvHoughLines2(cannyImg,storage,CV_HOUGH_PROBABILISTIC,1,CV_PI/180,10,5,10);pImg... lines = cvHoughLines2 (cannyImg, storage, CV_HOUGH_PROBABILISTIC,1,CV_PI/180, 10, 5, 10);
pImgDst = cvCreateImage (cvGetSize(test2), IPL_DEPTH_8U,3); //新建
cvCvtColor (test2, pImgDst, CV_GRAY2BGR); //灰度转换
for (int i = 0; i < lines->total; i++){
CvPoint* line = (CvPoint*)cvGetSeqElem (lines, i);
double slope = ((double)(line[0].y - line[1].y))/((double)(line[0].x - line[1].x)); //斜率
if(atan(slope) > 10 && atan(slope) < 30){ //判断直线的角度
cvLine (pImgDst, line[0], line[1], CV_RGB(255,0,0),2,8); //画出红线
}
}
我只想画出最上面图中,红色圈圈标出的地方,可是,加上角度的判断后,不能检测到直线,求原因和解决方案。
下面的图是没加if语句时画出的线。
展开
 我来答
从前有只小冷兔
2013-08-22 · TA获得超过161个赞
知道小有建树答主
回答量:100
采纳率:0%
帮助的人:91.9万
展开全部
atan 函数我记得输出是-0.5pi~+0.5pi吧,不是直接的角度,你要把 atan(slope) /pi *180才是角度,而且要注意可能角度是-90~+90,有可能是负的。注意取绝对值来判断吧。
另外最好先判断一下line[0].x - line[1].x不要为0,不然程序直接错误了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式