C++11多线程读不同的视频demo
1、环境:vs2015、opencv3以上
(ps:如果opencv cmake过并且cmake时勾选了有关qt的就不要使用了,这个多线程的小demo和qt的界面有冲突)
2、代码demo
#include<opencv2/opencv.hpp>
#include<thread>//首先要引用多线程的头文件
using namespace cv;
using namespace std;//使用std标准命名空间,因为thread类在std下面,如果不写这句话,下面的thread要这样写:std::thread
void read(VideoCapture cap,string win_name)//读取视频的核心函数
{
Mat frame;
while (cap.read(frame))//捕获每一帧
{
imshow(win_name, frame);//显示在窗口名为“win_name”的窗口下显示每一帧
waitKey(30);//延时30ms
}
}
void read_video1()//读取视频1,为了把视频和窗口名传给核心函数
{
VideoCapture cap("D:/DATA/video/out1.mp4");
string win_name = "show1";
read(cap, win_name);
}
void read_video2()//读取视频2,为了把视频和窗口名传给核心函数
{
VideoCapture cap("D:/DATA/video/out2.mp4");
string win_name = "show2";
read(cap, win_name);
}
int main()
{
thread t1(read_video1);//开启线程t1
thread t2(read_video2);//开启线程t2
t1.join();//等待线程t1结束
t2.join();//等待线程t2结束
return 0;
}
3、效果截图