{
IplImage * src
src = cvLoadImage(" D:\ \ image \ \ line . jpg ");
{
ipimage * dst = cvCreateImage(cvGetSize(src),8,1);
IPL image * color _ dst = cvCreateImage(cvGetSize(src),8,3);
CvMemStorage * storage = cvCreateMemStorage(0);//存儲檢測到的線段,可以是N*1的矩陣序列。如果直線的實際數量大於n,將返回線段的最大可能數量。
cv seq * lines = 0;
int I;
IPL image * src 1 = cvCreateImage(cvSize(src-& gt;寬度,src-& gt;height),IPL_DEPTH_8U,1);
cvCvtColor(src,src1,CV _ bgr 2 gray);//將src轉換成灰度圖像,保存在src1中。註意改成灰度圖像進行邊緣檢測。
cvCanny( src1,dst,50,200,3);//參數50和200的灰度變換
cvCvtColor( dst,color_dst,CV _ gray 2 bgr);
lines = cvHoughLines2( dst,storage,CV _ HOUGH _ PROBABILISTIC,1,CV_PI/180,80,30,10);
for(I = 0;我& lt線條-& gt;總計;i++)
{
cv point * line =(cv point *)cvGetSeqElem(lines,I);
cvLine( color_dst,line[0],line[1],CV_RGB(255,255,0),3,8);
double k=(double)(line[1])。y線[0]。y)/(double)(行[1])。x線[0]。x);
double d=line[0]。y線[0]。x * k;
printf("這是%d線,這條線是y = %.2f x + %.2f \n ",i+1,k,d);
}
cvNamedWindow( "Source ",1);
cvShowImage( "Source ",src);
cvNamedWindow( "Hough ",1);
cvShowImage( "Hough ",color _ dst);
cvWaitKey(0);
}
}