虚拟机ubnatu18.04 使用USB摄像头碰见问题

1.虚拟机用指令打开USB摄像头及使用cheese工具

参考:虚拟机内Ubuntu如何打开摄像头+解决cheese工具黑屏问题_ubuntu cheese-CSDN博客

2.在代码中同时使用两个摄像头时遇到 can't open camera by index

VideoCapture camera0(0);
if( !camera0.isOpened() )
{
    cout << "camera0 Open failed \n";
    return 1;
} 

VideoCapture camera1(1);
// camera1.set(CAP_PROP_FRAME_WIDTH,320);
// camera1.set(CAP_PROP_FRAME_HEIGHT,240);
if( !camera1.isOpened() )
{
    cout << "camera1 Open failed \n";
    return 1;
} 

在上述代码中把 VideoCapture camera1(1);改成VideoCapture camera1(2);就不会出现这样的问题;至于是什么原因还未得知(猜测:1个USB摄像头对应2个/dev/videox,第二个摄像头开始正好是/dev/video2);

3.从两个摄像头中取出画面帧,组合两个帧画面并显示出来

代码:

#include <opencv2/opencv.hpp>
#include<iostream>
 
using namespace cv;
using namespace std;
 
int main()
{
    VideoCapture camera0(0);
    if( !camera0.isOpened() )
    {
        cout << "camera0 Open failed \n";
        return 1;
    } 
 
    VideoCapture camera1(2);
    if( !camera1.isOpened() )
    {
        cout << "camera1 Open failed \n";
        return 1;
    } 
 
    while(true) 
    {
        //grab and retrieve each frames of the video sequentially
        Mat frame1,frame0,blended_img;
        bool bSuccess0 , bSuccess1;

        //camera1 >> frame1;
		bSuccess1 = camera1.read(frame1);
		if (!bSuccess1)
		{
			cout << "111 不能从视频文件读取帧" << endl;
			break;
		}

        //camera0 >> frame0;
        bSuccess0 = camera0.read(frame0);
		if (!bSuccess0)
		{
			cout << "000 不能从视频文件读取帧" << endl;
			break;
		}
        addWeighted(frame0, 0.3, frame1, 0.7, 0.0, blended_img);
  
        imshow("Video0", frame0);
        imshow("Video1", frame1);
        imshow("blended_img", blended_img);
 
        int c = waitKey(27);
        if(27 == char(c)) break;
 
    } 
    return 0; 
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值