CvCapture
,操作采用指针。VideoCapture
,操作采用变量。cvCreateCameraCapture(-1)
读入摄像头视频,cvCreateFileCapture("路径")
读入视频文件。cvQueryFrame(capture)
<<
,经过重载到operate函数。cvNamedWindow
,后面用cvShowImage
函数显示imshow
全部搞定。当然,cvNamedWindow
也有它到代替品:namedWindow()
;cvWaitKey
waitKey
cvReleaseCapture()
函数capture.release()
;#include<opencv2/opencv.hpp>
#include<iostream>
using namespace std;
using namespace cv;
int main(int argc,char **argv)
{
//VideoCapture capture(0); //// 从摄像头读入视频
VideoCapture capture("test.mp4"); //从本地读入视频
namedWindow("my vidio",CV_WINDOW_AUTOSIZE);
//循环显示每一帧
while(capture.isOpened())
{
Mat frame; //定义一个Mat变量,用于存储每一帧的图像
capture>>frame; //读取摄像头当前帧并传给frame
/*中间可以处理摄像头当前帧的图像*/
imshow("my vidio",frame); //显示当前帧
if(waitKey(40) == 27){
break; //按ESC就退出
}
}
capture.release();
cv::destroyAllWindows();
return 0;
}
#include <QCoreApplication>
#include <cv.hpp>
#include <highgui.h>
#include <video.hpp>
using namespace cv;
int main(int argc, char *argv[])
{
cvNamedWindow("mp4");
/*CvCapture结构体,保存图像信息,cvCreateCameraCapture(-1)读入摄像头视频,
* cvCreateFileCapture("路径")读入视频文件*/
CvCapture * capture=cvCreateCameraCapture(-1);
IplImage* frame;
while(1)
{
//cvQueryFrame(),读入CvCapture结构体指针,将下一帧加载到内存
frame=cvQueryFrame(capture);
if(!frame)
break;
//cvShowImage()在窗口中显示
cvShowImage("mp4",frame);
//cvWaitKey()触发按键、控制帧率
char c =cvWaitKey(33);
if(c==27)
break;
}
//cvReleaseCapture()释放结构体指针
cvReleaseCapture(&capture);
}
[比较opencv2、opencv3关于读取视频文件、摄像头的编程风格]https://blog.csdn.net/qq_34917736/article/details/77427596