首页 > 其他分享 >QCamera同时打开多个USB摄像头小Demo

QCamera同时打开多个USB摄像头小Demo

时间:2022-10-31 20:33:28浏览次数:68  
标签:count wid USB title Demo QCamera camera include MainWindow


先看一下效果:(最大传2M图片,所以我把图片缩小并降低了DPI)

QCamera同时打开多个USB摄像头小Demo_多个

 

注意:

一定不要把usb摄像头接到同一个USB集线器上,我这里是一个接到电脑外置接口,一个接到PCI-usb接口上了。如果要接更多的usb摄像头,最好接到PCI-USB接口上,这样才能保证同时打开,否则只能一个一个打开,不是我们想要的效果。

 

示例代码(这里代码只为了做出Demo,所以很简单):

 

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QCamera>
#include <QCameraInfo>
#include <QCameraViewfinder>
#include <QLabel>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
Q_OBJECT

public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();

void initCamera();
void initDeviceName();
private:
Ui::MainWindow *ui;
QList<QCameraInfo> m_camera;
QList<QCamera*> m_cameraList;
};

#endif // MAINWINDOW_H

 

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
setFixedSize(600,200);
setWindowTitle("Demo of Use Cameras");
setWindowIcon(QIcon(":/Demo_Hello.ico"));
initDeviceName();
initCamera();
}

MainWindow::~MainWindow()
{
delete ui;
}

void MainWindow::initCamera()
{
int count = m_camera.count();
for(int i = 0; i < count; i++) {
QWidget* wid = new QWidget(this);
wid->resize(this->width()/count, this->height());
wid->move(i*this->width()/count, 0);
QCamera* camera = new QCamera(m_camera.at(i));
QCameraViewfinder* viewfinder= new QCameraViewfinder(wid);
viewfinder->setFixedSize(wid->size());
camera->setViewfinder(viewfinder);
QLabel* title = new QLabel(this);
title->setText(m_camera.at(i).description());
title->resize(wid->width(), 20);
title->move(i*this->width()/count, 0);
title->setAlignment(Qt::AlignCenter);
title->setStyleSheet("background-color: black; color: white");
m_cameraList << camera;
if(i == 0) {
wid->setStyleSheet("background-color:red");
} else {
wid->setStyleSheet("background-color:blue");
}
m_cameraList.at(i)->start();
title->raise();
}
}

void MainWindow::initDeviceName()
{
m_camera.clear();
foreach (QCameraInfo info, QCameraInfo::availableCameras()) {
m_camera.append(info);
}
}

 

 

 

 

 

标签:count,wid,USB,title,Demo,QCamera,camera,include,MainWindow
From: https://blog.51cto.com/u_15854865/5811182

相关文章

  • st-link usb驱动安装不了
       https://community.st.com/s/question/0D50X00009XkbAsSAJ/how-to-install-stlinkv2-driver-in-win10-......
  • [单片机][USB_HID] USB问题汇总
    不同系统请求字符串次数(三个根节点)系统字符串2字符串3windos82linux13ios22单节点只会请求2次,以上现在属于正常。windos枚举时,每个节点都会重新重新请求字符串2。USBERR0......
  • [嵌入式框架][nrf52820][nrf52840] 硬件USB_HID
    USB设备(USBD)控制器实现全速USB设备功能,满足2.0版本的USB规范。这里列出的是USBD的主要特性:全速度(12mbps)设备完全符合通用串行总线规范修订2.0,包括以下是USB实施者论坛发......
  • [单片机][at32][填坑日记] [USB卡包] usb上电过程中快速发包导致卡包(终章)
    现象:pc重启过程中,不断发送按键数据,导致pc未能应答,致使下位机数据出现卡包现象。MCU发送’B’,PC显示’C’,MCU发送’E’,PC显示’B’原因造成如下:串口外设优先级大于USB中断(U......
  • Jenkins Pipeline 流水线-Demo
    JenkinsPipeline流水线流水线既能作为任务的本身,也能作为Jenkinsfile使用流水线可以让我们的任务从UI手动操作,转换为代码化,像dockerfile一样。从shell命令到配置文......
  • uni-app如何实现USB插入后自动弹出对应软件
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助最近碰到了一个奇葩需求,要用uni-app来实现usb接入设备的时候,让软件自动弹出来,这里给出我制作的过程和参考......
  • istio部署demoapp应用 (十四)sidecar
    创建client~#kubectlrunclient--image=ikubernetes/admin-box-it--rm--restart=Never--command--/bin/shIfyoudon'tseeacommandprompt,trypressingen......
  • grpc demo python客户端 c++服务端
    项目需啊将网站上传的图片传入c++推理引擎,网站使用flask架构,python编写,图片推理引擎是一个单独的server,c++编写,因此用grpc来传输比较合适。理论上来说只要规定好proto文件,......
  • Demo1
    publicclassHelloWorld{//public目前是起限制作用,限制文件名和类名保持一致,否则不会运行。//class:定义的一个类.后面定义该类的名称类就如一栋大楼。......
  • USB取证 学习笔记
    USB取证免责声明本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关.相关文章USB-CTFWikiUSB流量取证分析......