C++11 thread类实现OpenCV多线程开启摄像头

本文介绍了使用C++11的thread库来实现OpenCV多线程打开并读取两个摄像头图像的过程。在Visual Studio 2017和OpenCV 3.4.0环境下,遇到线程传参问题,通过std::ref()解决了引用传递错误。作者期待对此现象有深入理解的大神给出解释。
摘要由CSDN通过智能技术生成

       刚接触C++多线程编程,好在C++11提供了官方的多线程库thead,比较容易上手而且最重要的是作为官方标准库保证了可移植性,于是试试能不能使用thread类实现OpenCV中多线程同时打开两个摄像头并读取图像。

       VS2017 + OpenCV 3.4.0

#include "stdafx.h"
#include "opencv2/opencv.hpp"
#include "stdio.h"
#include "iostream"
#include "thread"

std::thread::id main_thread_id = std::this_thread::get_id();  // 获取主线程ID

bool openCamera(cv::VideoCapture &cap, const int cameraDrive)
{
	cap.open(cameraDrive);
	if (!cap.isOpened()) {
		printf("The camera is not opened.\n");
		return false;
	}
	else {
		printf("The %dth camera is opened.\n", cameraDrive + 1);
		
		// 判断当前线程是否为主线程
		if (main_thread_id == std::this_thread::get_id())
			printf("This is the main thread.\n");
		else
			printf("This is not the main thread.\n");
		
		// 设置相机捕获画面尺寸大小
		cap.set(cv::CAP_PROP_FRAME_WIDTH, 640);
		cap.set(cv::
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值