opencv 直线检测,不能检测到理想的线段,求指导~lines = cvHoughLines2 (cannyImg,storage,CV_HOUGH_PROBABILISTIC,1,CV_PI/180,10,5,10); \x05\x05pImgDst = cvCreateImage (cvGetSize(test2),IPL_DEPTH_8U,3); //新建\x05\x05cvCvtColo

来源:学生作业帮助网 编辑:作业帮 时间:2024/09/29 13:51:12
opencv 直线检测,不能检测到理想的线段,求指导~lines = cvHoughLines2 (cannyImg,storage,CV_HOUGH_PROBABILISTIC,1,CV_PI/180,10,5,10);  \x05\x05pImgDst = cvCreateImage (cvGetSize(test2),IPL_DEPTH_8U,3);            //新建\x05\x05cvCvtColo
xVOFW,lDZR DB*?Ήh!X1P)-PM4؝R[7iZ{w]Gj+jqS-߬;(_-N7NiT|52Ц:)-g$SMIŇXY%اC}. ^>_1 0".(E}> De0Dx,Th? up49?poH˺%[ibRVeB9b۝-WW!oْt',f&i9TS j0{=i~<#8dXL;C%CQ%( ElD†n(!rC^RGg`Sl ĖpӖH+W0u-ćU^ hP(zJ[0]gjy,}Sҧ ISeYRUC8Q.U¼1x]%^pC(x),@8=k;Ve!B.xِ(Fxh)m9J?iD=>Z:mCp2 7>{|ek%T٪8 ̴CUkʉR 'Xmm7o3g5 Xڧ^=TƘt5 eG \_Qힾ+n4{Tb-QKZ[P% )B%UMp@VJEừ} y`r䔡͜kD ӈ^,D]EӕZeA=~ [CqWǫ7kheZa0j} Z㿻>MܝD%w% ENAx*F G7ZVѭ4cAϜjy+'0+}rÛF  _HtumLS ofq ߮H6NŌ9Uhq1WA20սք;;{a3&u{ΐ5 |D>r' 80cm3 Yl/vP%m6e~TBq=}ޟqLν$&ۼ5Q-Wq6hU {o~;H_Z

opencv 直线检测,不能检测到理想的线段,求指导~lines = cvHoughLines2 (cannyImg,storage,CV_HOUGH_PROBABILISTIC,1,CV_PI/180,10,5,10); \x05\x05pImgDst = cvCreateImage (cvGetSize(test2),IPL_DEPTH_8U,3); //新建\x05\x05cvCvtColo
opencv 直线检测,不能检测到理想的线段,求指导~






lines = cvHoughLines2 (cannyImg,storage,CV_HOUGH_PROBABILISTIC,1,CV_PI/180,10,5,10);  
\x05\x05pImgDst = cvCreateImage (cvGetSize(test2),IPL_DEPTH_8U,3);            //新建
\x05\x05cvCvtColor (test2,pImgDst,CV_GRAY2BGR);               //灰度转换
\x05\x05for (int i = 0; i < lines->total; i++){  
    \x05\x05\x05CvPoint* 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){                                                             //判断直线的角度
    \x05    \x05\x05\x05cvLine (pImgDst,line[0],line[1],CV_RGB(255,0,0),2,8);              //画出红线
    }
\x05\x05}
我只想画出最上面图中,红色圈圈标出的地方,可是,加上角度的判断后,不能检测到直线,求原因和解决方案.
下面的图是没加if语句时画出的线.

opencv 直线检测,不能检测到理想的线段,求指导~lines = cvHoughLines2 (cannyImg,storage,CV_HOUGH_PROBABILISTIC,1,CV_PI/180,10,5,10); \x05\x05pImgDst = cvCreateImage (cvGetSize(test2),IPL_DEPTH_8U,3); //新建\x05\x05cvCvtColo
atan 函数我记得输出是-0.5pi~+0.5pi吧,不是直接的角度,你要把 atan(slope) /pi *180才是角度,而且要注意可能角度是-90~+90,有可能是负的.注意取绝对值来判断吧.
另外最好先判断一下line[0].x - line[1].x不要为0,不然程序直接错误了.