#include<cxcore.h>
#include<highgui.h>
#include<iostream>
int main ( int argc , char* argv)
{
//加载图像并提取轮廓边缘检测
IplImage* src = cvLoadImage( "F:\\bb1.jpg");
IplImage* srcgray = cvCreateImage( cvGetSize( src) , IPL_DEPTH_8U , 1);
IplImage* srccanny = cvCreateImage( cvGetSize( src) , IPL_DEPTH_8U , 1);
IplImage* dst = cvCreateImage( cvGetSize( src) , IPL_DEPTH_8U , 1);
cvCvtColor ( src , srcgray , CV_BGR2GRAY);
cvCanny( srcgray , srccanny , 50 , 150 , 3);
//检测直线
CvMemStorage* storage = NULL ;
storage = cvCreateMemStorage(0);
CvSeq* lines = NULL ;
lines = cvHoughLines2(srccanny , storage ,CV_HOUGH_PROBABILISTIC, 1, CV_PI/180, 80, 200, 10);
dst = cvCreateImage (cvGetSize(src), IPL_DEPTH_8U, 3);
cvCvtColor (srccanny, dst, CV_GRAY2BGR);
/*在pImgDst上画出检测到的直线*/
for (int i = 0; i < lines->total; i++)
{
CvPoint* line = (CvPoint*)cvGetSeqElem (lines, i);
cvLine (dst, line[0], line[1], CV_RGB(255,0,0), 3, 8);
}
cvNamedWindow ("src",1);
cvNamedWindow ("canny", 1);
cvNamedWindow ("hough", 1);
cvShowImage ("src", src);
cvShowImage ("canny", srccanny);
cvShowImage ("hough", dst);
cvWaitKey (0);
cvReleaseImage (&src);
cvReleaseImage (&srcgray);
cvReleaseImage (&srccanny);
cvReleaseImage (&dst);
cvReleaseMemStorage (&storage);
return 0;
}