#include<cv.h>
#include<highgui.h>
CvCapture* capture;
IplImage* doCanny(IplImage *in,double lowThresh,double highThresh,double aperture)
{
/*if(in->nChannels!=1)
return 0;*/
IplImage* out=cvCreateImage(cvSize(in->width,in->height),IPL_DEPTH_8U,1);
cvCanny(in,out,lowThresh,highThresh,aperture);
return out;
}
int main()
{
capture=cvCreateCameraCapture(-1);
IplImage* frame;
IplImage* out;
while(1)
{
/*cvQueryFrame用来将下一帧视频文件载入内存,返回一个对应当前帧的指针,
此内存是cvCapture已经加载好的内存,所以最后不用再写释放帧的语句,释放capture就包含了释放cvFrame。*/
frame=cvQueryFrame(capture);
if(!frame)
break;
cvSmooth(frame,frame,CV_GAUSSIAN,3,3,0,0);
//out=doCanny(frame,30,100,3);
cvShowImage("show",frame);
//cvShowImage("show",out);
char c=cvWaitKey(33);
if(c==27)
{
cvReleaseCapture(&capture);
//cvDestroyWindow("video");
break;
}
}
return 0;
}
本文介绍了一个基于OpenCV的简单程序,该程序能够从摄像头捕获视频流,并对其进行实时图像处理。主要实现了视频流的平滑处理及Canny边缘检测算法的应用,通过调整参数可以改变边缘检测的效果。
1966

被折叠的 条评论
为什么被折叠?



