对摄像头采集的图像做hough变换。

来源:互联网 发布:ppt数据分析图表对比 编辑:程序博客网 时间:2024/05/22 14:04

hough变换主要是对直线做特征提取,但是很多都是对静态的图片做hough变换,我觉得意义并不大,如果能实时的对摄像头采集到的图像做hough变换,提取直线的话就能为我们提供更多安全,比如我们做的高压线防撞系统。下面代码是我做的关于一点摄像头提取图像进行hough变换,但是出路速度很慢,可能就是一帧一帧的提取再处理,有点像放幻灯片,所以还需要改进,如果有大神还请指教。谢谢!


#include<cv.h>  

#include<highgui.h>  
#include<iostream>
// #pragma comment(lib, "cv.lib")  
// #pragma comment(lib, "cxcore.lib")  
// #pragma comment(lib, "highgui.lib")  
using namespace std;
using namespace cv;




int main(int argc,char** argv)  
{  


CvCapture* capture1 = cvCreateCameraCapture(0);


double w=640,h=480;


//cvNamedWindow("camera_1",CV_WINDOW_AUTOSIZE);


cvSetCaptureProperty(capture1,CV_CAP_PROP_FPS,5);


IplImage* pImgSrc = NULL;    //源图像  
IplImage* pImg8u = NULL;     //灰度图  
IplImage* pImgCanny = NULL;  //边缘检测后的图  
IplImage* pImgDst = NULL;    //在图像上画上检测到的直线后的图像  
CvSeq* lines = NULL;  
CvMemStorage* storage = NULL;  


/*边缘检测*/  
//pImgSrc = cvLoadImage ("D:\\wode.jpg", 1);  




while(1)
{


cout<<"1"<<endl;




pImgSrc=cvQueryFrame(capture1);
pImg8u = cvCreateImage (cvGetSize(pImgSrc), IPL_DEPTH_8U, 1);  
pImgCanny = cvCreateImage (cvGetSize(pImgSrc), IPL_DEPTH_8U, 1);  
pImgDst = cvCreateImage (cvGetSize(pImgSrc), IPL_DEPTH_8U, 1);  


cvCvtColor (pImgSrc, pImg8u, CV_BGR2GRAY);  
cvCanny (pImg8u, pImgCanny, 20, 200, 3);  


/*检测直线*/  
storage = cvCreateMemStorage (0);  
lines = cvHoughLines2 (pImgCanny, storage, CV_HOUGH_PROBABILISTIC, 1, CV_PI/180, 80, 200, 10);  
pImgDst = cvCreateImage (cvGetSize(pImgSrc), IPL_DEPTH_8U, 3);  
cvCvtColor (pImg8u, pImgDst, CV_GRAY2BGR);  


/*在pImgDst上画出检测到的直线*/  
for (int i = 0; i < lines->total; i++)  
{  
CvPoint* line = (CvPoint*)cvGetSeqElem (lines, i);  
cvLine (pImgDst, line[0], line[1], CV_RGB(255,0,0), 3, 8);  
}  


//cvNamedWindow ("src",1);  
//cvNamedWindow ("canny", 1);  
//cvNamedWindow ("hough", 1);  
cvShowImage ("src", pImgSrc);  
cvShowImage ("canny", pImgCanny);  
cvShowImage ("hough", pImgDst);  


cvWaitKey (0);  






}


cvReleaseImage (&pImgSrc);  
cvReleaseImage (&pImg8u);  
cvReleaseImage (&pImgCanny);  
cvReleaseImage (&pImgDst);  
cvReleaseMemStorage (&storage);  


return 0;  

}  



下面是我采集到的一部分图像,可以参考



0 0
原创粉丝点击