#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;
}