OpenCV 4.1习题解答
来源:互联网 发布:cad是怎么编程 编辑:程序博客网 时间:2024/05/17 05:12
chap 4.1 习题解答
读取视频文件,显示彩色视频、灰度视频、边缘视频。
#include<opencv2/opencv.hpp>#include<iostream>// chap 4.1 video : frame - gray - cannyvoid main(){using namespace std;CvCapture* capture=cvCreateFileCapture("D:\\video\\case.mp4");IplImage* frame=NULL;while(capture){frame=cvQueryFrame(capture);if(frame==NULL){cout<<"frame error!"<<endl;// display the frame errorbreak;}IplImage* gray=cvCreateImage(cvGetSize(frame),8,1);// gray pic 8UC1IplImage* canny_pic=cvCreateImage(cvGetSize(frame),8,1);// canny_pic 8UC1cvCvtColor(frame,gray,CV_BGR2GRAY);// pay attention to BGR2GRAY ( not RGB2GRAY )cvCanny(gray,canny_pic,100,200,3);// the last parameter must be 3..cvNamedWindow("frame");cvNamedWindow("gray");cvNamedWindow("canny");cvShowImage("frame",frame);cvShowImage("gray",gray);cvShowImage("canny",canny_pic);if(cvWaitKey(30)>0) // not cvWaitKey(0);break; // any keys pushed down, exit the loop}cvReleaseCapture(&capture);// Don't releaseImage(&frame)//cvReleaseImage(&gray);//cvReleaseImage(&canny_pic);}
注意几个小问题:
0, 注意gray 、 canny 通道数,8UC1 , 在没有得到图像大小前,不能设定图像大小,大或小都导致CV_BGR2GRAY 失败。
1, 读取视频文件路径: d:\\video\\case.mp4 中是' \ \ ' ,而非‘\ ' . 写错的后果,capture捕获视频失败,while( false ),直接退出程序。
2, 视频格式。这个问题我说不准,之前用opencv2.1.0可以读取avi 视频,不能读mp4 ;
现在opencv2.4.4 能读取mp4, 不能读取 avi 。 可能是系统没有安装其他相关的视频编解码器的缘故吧。
当你视频路径没有问题,而程序一闪而过(不显示 " frame error!"),很可能就是opencv不支持当前的视频格式,可以转换其他格式试试。
3,假如碰到一种格式,while( capture)为真,而frame 得不到相应的帧图像,为了应对该情况,使用判断 if ( frame == NULL ) 决定是否结束程序。
4, 程序内的灰度图、边缘图指针的创建是在循环体内,最后就不用再循环体外释放了。
5,只能释放 capture, 不要释放 frame。 因为创建frame 的时候,没有创建相应的内存空间,只是个空的指针头,教材内有相关内容。
6,按任意键退出 if ( cvWaitKey(30) > 0 ) break; 没键按下,每帧图像显示30ms直到视频结束或按键按下。
这是简单的写法,也可以写作: char c = cvWaitKey(33);
if ( c > 0 ) break ; // any key pushed to exit
或
if( c == 27 ) break; // Esc pushed down to exit
- OpenCV 4.1习题解答
- OpenCV 3.3 习题解答
- OpenCV 3.5 习题解答
- OpenCV 3.6 习题解答
- OpenCV 4.2习题解答
- OpenCV 4.4 习题解答
- OpenCV 3.1.b习题解答
- 学习OpenCV 3.1.a 习题解答
- 《学习OpenCV》课后习题解答1
- 《学习OpenCV》课后习题解答2
- 《学习OpenCV》课后习题解答3
- 《学习OpenCV》课后习题解答4
- 《学习OpenCV》课后习题解答5
- 《学习OpenCV》课后习题解答6
- 《学习OpenCV》课后习题解答7
- 《学习OpenCV》课后习题解答8
- 《学习OpenCV》课后习题解答9
- 习题解答
- poj 测试数据
- android 选项菜单 通过配置文件生成
- rabbitmq一---一对一发送及接收消息
- android 上下文菜单(长按)通过程序生成
- android项目如何正确快速导入第三方jar包
- OpenCV 4.1习题解答
- 颠倒单词的出现顺序
- android 上下文菜单(长按)通过配置文件生成
- RTMP客户端的开发(一)
- POJ 3417 Network (LCA应用,5级)
- 将数组作为函数的返回值
- Atlantis
- Linux Socket编程
- Android中的Context详解