學習OPENCV之讀取影象和視訊
讀取影象的程式碼:
#include <opencv2\opencv.hpp>
#include <iostream>
#include <string>
using namespace cv;
using namespace std;
int main()
{
Mat img = imread("1.jpg");
if(img.empty())
{
cout<<"error";
return -1;
}
imshow("xx的靚照",img);
waitKey();
return 0;
}
讀取視訊:(opencv讀取視訊是沒有聲音的,只是提取影象)
http://yu2xiangyang.blog.163.com/blog/static/3731563820106814831778/
#include "highgui.h"
int main( int argc ,char ** argv){
CvCapture * capture = cvCreateFileCapture ("2.avi"); //讀取視訊
if(capture==NULL) {
printf("NO capture"); //讀取不成功,則標識
return 1;
};
double fps=cvGetCaptureProperty(capture, CV_CAP_PROP_FPS ); //讀取視訊的幀率
int vfps = 1000 / fps; //計算每幀播放的時間
printf("%5.1f\t%5d\n",fps,vfps);
double frames=cvGetCaptureProperty(capture,CV_CAP_PROP_FRAME_COUNT);//讀取視訊中有多少幀
printf("frames is %f\n",frames);
cvNamedWindow("example",CV_WINDOW_AUTOSIZE); //定義視窗
IplImage * frame;
while(1){
frame = cvQueryFrame( capture ); //抓取幀
float ratio = cvGetCaptureProperty(capture, CV_CAP_PROP_POS_AVI_RATIO); //讀取該幀在視訊中的相對位置
printf("%f\n",ratio);
if(!frame)break;
cvShowImage("example",frame); //顯示
char c = cvWaitKey(vfps);
if(c == 27 )break;
}
cvReleaseCapture(&capture);
cvDestroyWindow("example");
}