您的位置:首页 > 运维架构

《学习OpenCV (中文版)》第2章 练习3和练习4

2013-11-21 16:46 323 查看
IplImage* doPyrDown(IplImage* in, int filter = IPL_GAUSSIAN_5x5) {
//assert(in->width%2 ==0 && in->height%2==0);
IplImage* out = cvCreateImage(cvSize(in->width/2, in->height/2), in->depth, in->nChannels);
cvPyrDown(in, out);
return out;
}

void fromCamera2() {
CvCapture* capture = cvCreateCameraCapture(0);
//CvCapture* capture = cvCreateFileCapture("I:/Movies/上海武士01.mkv");
cvNamedWindow("camera", CV_WINDOW_AUTOSIZE);
if(capture != NULL) {
IplImage* frame;
frame = cvQueryFrame(capture);
double fps = cvGetCaptureProperty(capture, CV_CAP_PROP_FPS);
if(fps<0.00000001) fps = 23.0;
CvSize size = cvSize(
(int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH)/2,		//要注意这里的大小,与变换后的图像一致
(int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT)/2
);
CvVideoWriter* writer = cvCreateVideoWriter("camera.avi", CV_FOURCC('M', 'J', 'P', 'G'), fps, size);
CvSize size2 = cvSize(
(int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH),
(int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT)
);
CvVideoWriter* writer2 = cvCreateVideoWriter("camera.mkv", CV_FOURCC('M', 'J', 'P', 'G'), fps, size2);
IplImage* out_frame = cvCreateImage(size, IPL_DEPTH_8U, 3);
IplImage* rframe = frame;
while(1) {
frame = cvQueryFrame(capture);
if(!frame) {
break;
}
cvShowImage("camera", rframe);

out_frame = doPyrDown(frame);
cvWriteFrame(writer, out_frame);
cvWriteFrame(writer2, frame);

char c = cvWaitKey(10);
if(c==27) break;
}

cvReleaseVideoWriter(&writer);
} else {
std::cout<<"NULL"<<std::endl;
}
cvReleaseCapture(&capture);
cvDestroyWindow("camera");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  opencv CC++ 陈增雄