QT 调用USB免驱摄像头

简介: QT 调用USB免驱摄像头

前言

本篇文章来讲解一下如何使用QT调用摄像头,这里我使用的是USB免驱动摄像头,使用不需要按照驱动QT就可以调用到摄像头。

一、界面布局

这里使用QT设计师进行界面的布局:

二、QImageEncoderSettings类

QImageEncoderSettings 类是 Qt 中用于配置图像编码设置的类。它用于指定图像编码器的参数,例如压缩质量、图像大小、格式等。下面是 QImageEncoderSettings 类的一些重要成员和功能:

1.构造函数:QImageEncoderSettings::QImageEncoderSettings() 用于创建一个默认的图像编码设置对象。

2.QImageEncoderSettings::codec():获取或设置图像编码器的编解码器(codec)。编码器用于将图像数据编码为指定格式(例如 JPEG、PNG 等)。

3.QImageEncoderSettings::compressionQuality():获取或设置图像编码的压缩质量。压缩质量是一个介于 0 和 100 之间的整数,值越高表示质量越好但文件大小可能更大(仅适用于支持压缩的图像格式)。

4.QImageEncoderSettings::setResolution(int width, int height):设置图像的分辨率(宽度和高度)。该函数接受两个整数参数表示宽度和高度。

5.QImageEncoderSettings::resolution():返回分辨率的 QSize 对象,可以通过 width() 和 height() 函数获取宽度和高度。

6.QImageEncoderSettings::setFormat(const QString &format):设置图像编码的格式。格式应该是编码器支持的有效格式名称的字符串(例如 “jpeg”、“png” 等)。

7.QImageEncoderSettings::format():获取图像编码的格式。

8.QImageEncoderSettings::isNull():检查图像编码设置是否为空。如果设置为空,则表示未指定任何设置。

可以通过以下方式使用 QImageEncoderSettings 类来配置图像编码设置:

QImageEncoderSettings settings;
settings.setCodec("jpeg");
settings.setCompressionQuality(90);
settings.setResolution(800, 600);

上述示例代码设置了图像编码设置的编解码器为 “jpeg”,压缩质量为 90,分辨率为 800x600。

QImageEncoderSettings 类通常与 QMediaRecorder 或 QCameraImageCapture 类一起使用,以配置图像或视频的编码设置。

三、图像的显示

.h文件:

#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QCameraViewfinder>
#include <QCamera>
#include <QCameraInfo>
#include <QCameraImageCapture>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
    Q_OBJECT
    QCamera* m_camera;
    QCameraImageCapture* m_imageCapture;
public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();
private slots:
    void on_startbtn_clicked();
    void on_stopbtn_clicked();
    void on_resolutioncom_currentIndexChanged(const QString &arg1);
private:
    Ui::Widget *ui;
};
#endif // WIDGET_H

.cpp文件:

#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    QList<QCameraInfo> cameras = QCameraInfo::availableCameras();//获取摄像头信息
    for (int i = 0; i < cameras.count(); i++)
    {
        const QCameraInfo cameraInfo = cameras.at(i);
        m_camera = new QCamera(cameraInfo);//创建摄像头
        m_imageCapture = new QCameraImageCapture(m_camera);//创建捕获图像类
        ui->devicecom->addItem(cameraInfo.description());
        m_camera->setViewfinder(ui->widget);//camera设置视图
        m_camera->start();//开始拍照
        /* 获取当前分辨率 */
        QList<QSize> resolutions = m_imageCapture->supportedResolutions();
        for (int j = 0; j < resolutions.count(); ++j)
        {
          /*将当前支持的分辨率添加进入combox中*/
            const QSize resolution = resolutions.at(j);
            ui->resolutioncom->addItem(QString::number(resolution.width()) + "x" + QString::number(resolution.height()));
        }
    }
}
Widget::~Widget()
{
    delete ui;
}
void Widget::on_startbtn_clicked()
{
}
void Widget::on_stopbtn_clicked()
{
    m_imageCapture->capture();//捕获照片
}
void Widget::on_resolutioncom_currentIndexChanged(const QString &arg1)
{
    QString resolutions = arg1;
    QString xresolutions = resolutions.split("x").at(0);
    QString yresolutions = resolutions.split("x").at(1);
    // 设置目标分辨率
    QImageEncoderSettings settings = m_imageCapture->encodingSettings();
    settings.setResolution(xresolutions.toInt(), yresolutions.toInt());
    m_imageCapture->setEncodingSettings(settings);
}

具体效果大家可以去进行实际的操作。

总结

本篇文章就讲解到这里。


相关文章
|
Ubuntu Linux API
linux系统中使用QT实现摄像头功能的方法
linux系统中使用QT实现摄像头功能的方法
251 0
|
7月前
qt开发使用camera类获取摄像头信息并拍照保存
qt开发使用camera类获取摄像头信息并拍照保存
220 0
|
7月前
|
存储 编解码 监控
QT5 QCamera摄像头
QT5 QCamera摄像头
363 0
|
编译器 Linux
嵌入式 QT usb camera库驱动摄像头
嵌入式 QT usb camera库驱动摄像头
|
存储 编解码 计算机视觉
项目实战:Qt+OpenCV操作摄像头拍照、调节参数和视频录制
项目实战:Qt+OpenCV操作摄像头拍照、调节参数和视频录制
项目实战:Qt+OpenCV操作摄像头拍照、调节参数和视频录制
|
计算机视觉 C++
Qt中实时调取摄像头(利用OpenCV)
Qt中实时调取摄像头(利用OpenCV)
496 1
Qt中实时调取摄像头(利用OpenCV)
Qt中实时调取摄像头(含代码)
Qt中实时调取摄像头(含代码)
182 0
Qt中实时调取摄像头(含代码)
|
编解码 算法 计算机视觉
案例分享:Qt内窥镜相机录像程序(打开摄像头、支持多种摄像头、分辨率调整、翻转、旋转、亮度调整、拍照、录像、回放图片、回放录像)
案例分享:Qt内窥镜相机录像程序(打开摄像头、支持多种摄像头、分辨率调整、翻转、旋转、亮度调整、拍照、录像、回放图片、回放录像)
案例分享:Qt内窥镜相机录像程序(打开摄像头、支持多种摄像头、分辨率调整、翻转、旋转、亮度调整、拍照、录像、回放图片、回放录像)
|
存储 编解码 C语言
项目实战:Qt+ffmpeg摄像头检测工具
项目实战:Qt+ffmpeg摄像头检测工具
项目实战:Qt+ffmpeg摄像头检测工具
|
5月前
|
数据安全/隐私保护 C++ 计算机视觉
Qt(C++)开发一款图片防盗用水印制作小工具
文本水印是一种常用的防盗用手段,可以将文本信息嵌入到图片、视频等文件中,用于识别和证明文件的版权归属。在数字化和网络化的时代,大量的原创作品容易被不法分子盗用或侵犯版权,因此加入文本水印成为了保护原创作品和维护知识产权的必要手段。 通常情况下,文本水印可以包含版权声明、制作者姓名、日期、网址等信息,以帮助识别文件的来源和版权归属。同时,为了增强防盗用效果,文本水印通常会采用字体、颜色、角度等多种组合方式,使得水印难以被删除或篡改,有效地降低了盗用意愿和风险。 开发人员可以使用图像处理技术和编程语言实现文本水印的功能,例如使用Qt的QPainter类进行文本绘制操作,将文本信息嵌入到图片中,
187 1
Qt(C++)开发一款图片防盗用水印制作小工具