#include "opencv2/opencv.hpp"
static int TID = 0;
unsigned int __stdcall captureImgThread(void* lpvoid)
{
Ccamera* _this = (Ccamera*)lpvoid;
cv::VideoCapture capture;
//capture.open(0);//摄像头
capture.open("C:\\WIN_20210417_22_05_20_Pro.mp4");
while (true)
{
cv::Mat img;// = cv::imread("D:\\tmp\\test.png");
capture >> img;
if (img.empty())
{
cv::waitKey(10);
capture.set(CV_CAP_PROP_POS_FRAMES, 0);
continue;
}
cv::Mat dstImg;
cv::resize(img, dstImg, cv::Size(640, 480));
unsigned char* pBuf = dstImg.data;
int nSize = dstImg.cols*dstImg.rows * 3;
int width = dstImg.cols;
int height = dstImg.rows;
for (int i = 0; i < TID; i++)
{
showVideo(i, (unsigned char*)pBuf, nSize, width, height);
}
Sleep(50);
// cv::waitKey(50);
}
}
void initTestCamera()
{
if (TID == 0)
{
auto handle = (HANDLE)_beginthreadex(NULL, 0, captureImgThread, this, 0, NULL);
if (handle == INVALID_HANDLE_VALUE)
{
return;
}
CloseHandle(handle);
}
TID += 1;
}
1. initTestCamera 开启线程
2. showVideo 处理数据