《学习OpenCV (中文版)》第2章 练习3和练习4
来源:互联网 发布:致远软件工作怎么样 编辑:程序博客网 时间:2024/04/29 05:47
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");}