opencv两个线程采集图像
#include <windows.h>
#include <stdio.h>
#include <opencv2/opencv.hpp>
#include<iostream>
using namespace cv;
using namespace std;
DWORD WINAPI ThreadProc1(LPVOID lpParameter);
DWORD WINAPI ThreadProc2(LPVOID lpParameter);
int main()
{
HANDLE handle1 = CreateThread(NULL, 0, ThreadProc1, NULL, 0, NULL);
HANDLE handle2 = CreateThread(NULL, 0, ThreadProc2, NULL, 0, NULL);
CloseHandle(handle1);
CloseHandle(handle2);
system("pause");
return 0;
}
DWORD WINAPI ThreadProc1(LPVOID lpParameter)
{
VideoCapture cap0;
Mat frame0;
cap0.open(0);
cap0.set(CV_CAP_PROP_FRAME_WIDTH, 640);
cap0.set(CV_CAP_PROP_FRAME_HEIGHT, 480);
if (!cap0.isOpened())
{
cout << "camera0 open failed!" << endl;
}
while (true)
{
cap0.grab();
cap0.read(frame0);
if (frame0.empty())
{
cout << "Camera0 grab frame failed!" << endl;
}
else
{
imshow("Video0", frame0);
}
if (waitKey(30) == 27)
break;
}
return 0;
}
DWORD WINAPI ThreadProc2(LPVOID lpParameter)
{
VideoCapture cap1;
Mat frame1;
cap1.open(1);
cap1.set(CV_CAP_PROP_FRAME_WIDTH, 640);
cap1.set(CV_CAP_PROP_FRAME_HEIGHT, 480);
if (!cap1.isOpened())
{
cout << "camera1 open failed!" << endl;
}
while (true)
{
cap1.grab();
cap1.read(frame1);
if (frame1.empty())
{
cout << "Camera1 grab frame failed!" << endl;
}
else
{
imshow("Video1", frame1);
}
if (waitKey(30) == 27)
break;
}
return 0;
}
halcon多个相机采集
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/e11873af7573199d470af2e5f8126dc3.png)