當前位置:編程學習大全網 - 源碼下載 - 求opencv用C++實現邊緣檢測,求兩條直線的距離。

求opencv用C++實現邊緣檢測,求兩條直線的距離。

int main()

{

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);

}

}

  • 上一篇:cf怎麽設置爆頭戰
  • 下一篇:Yf1024源代碼
  • copyright 2024編程學習大全網