QT获取USB相机具体属性信息

  • 代码获取
#include 

foreach (const QCameraInfo& cameraInfo, cameras)
{
    QString device_name =  cameraInfo.deviceName();
    qDebug() << "Device Name: " << device_name;
    qDebug() << "Description: " << cameraInfo.description();

    //@device:pnp:\\\\?\\usb#vid_174f&pid_2435&mi_00#6&3051f76e&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\\global
    //@device:pnp:\\\\?\\usb#vid_0c45&pid_ae11&mi_00#6&2d77a22d&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\\global
    //提取vid号
    QRegularExpression vidRegex("vid_([0-9a-fA-F]+)", QRegularExpression::CaseInsensitiveOption);
    QRegularExpressionMatch vidMatch = vidRegex.match(device_name);
    QString vid = vidMatch.captured(1);

    //提取pid号
    QRegularExpression pidRegex("pid_([0-9a-fA-F]+)", QRegularExpression::CaseInsensitiveOption);
    QRegularExpressionMatch pidMatch = pidRegex.match(device_name);
    QString pid = pidMatch.captured(1);

    qDebug() << "VID: " << vid ;
    qDebug() << " PID: " << pid;

}
  • 输出
Device Name:  "@device:pnp:\\\\?\\usb#vid_0c45&pid_ae11&mi_00#7&2d2b7bc9&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\\global"
Description:  "LRCP  imx291"
VID:  "0c45"
PID:  "ae11"
  • 含义
    • @device:pnp::这是一个设备标识前缀,指示该字符串是一个设备标识符。
    • \\?\usb:这是Windows操作系统中的设备路径前缀,表示该设备是USB设备。
    • #vid_0c45&pid_ae11&mi_00:这是USB设备的唯一标识符部分。其中:
    • vid_0c45:表示设备的Vendor ID(厂商标识符),这里的VID为0c45。
    • pid_ae11:表示设备的Product ID(产品标识符),这里的PID为ae11。
    • mi_00:表示设备的Interface Number(接口编号),这里的接口编号为00。
    • #7&2d2b7bc9&0&0000#:这是设备实例的唯一标识符部分,用于区分具有相同VID和PID的多个设备。这里的具体值为7&2d2b7bc9&0&0000。
    • #{65e8773d-8f56-11d0-a3b9-00a0c9223196}:这是设备类别的唯一标识符部分,用于指示设备的类别。这里的标识符指示设备为视频设备(Video Device Class)。
    • \global:这是设备路径的后缀,用于指示设备的全局可访问路径。

你可能感兴趣的:(qt,数码相机)