QT里用QCamera类操作摄像头.
用QCameraInfo类获取摄像头的信息
qmake: QT += multimedia
//获取所有能用的摄像头信息代码:
QList<QCameraInfo> list;
list = QCameraInfo::availableCameras();
for (int i = 0; i < list.size(); i++)
{
qDebug() << list.at(i).deviceName();
qDebug() << list.at(i).description();
qDebug() << list.at(i).position();
qDebug() << "###############";
}
//编译执行的输出:
"PC Camera"
"/dev/video0"
QCamera::UnspecifiedPosition
###########
"USB2.0 PC CAMERA"
"/dev/video1"
QCamera::UnspecifiedPosition
###########
//
QCamera类对象操作摄像头可以作三个操作。
一 用 QCameraViewfinder 窗口对象来显示摄像头里的图像
qmake: QT += multimediawidgets
代码:
camera = new QCamera("/dev/video1", this);
vfinder = new QCameraViewfinder(this);
vfinder->setGeometry(10, 10, 320, 240);
camera->setViewfinder(vfinder);
camera->start();
二 用QCameraImageCapture类对象捕捉单张图像.
代码:
camera = new QCamera("/dev/video0", this);
icapture = new QCameraImageCapture(camera);
camera->setCaptureMode(QCamera::CaptureStillImage);
camera->start();
//camera开始工作几秒后才可以捕捉
icapture->capture("/kk.jpg");
三 用QMediaRecorder来录制视频
代码:
camera = new QCamera("/dev/video0", this);
btn = new QPushButton("START", this);
recorder = new QMediaRecorder(camera);
recorder->setOutputLocation(QUrl("/kkkk")); // 录制出来的视频文件在“/kkkk.ogg”, 可用totem来播放
camera->setCaptureMode(QCamera::CaptureVideo);
camera->start();
recorder->record(); //开始录制,不能在构造函数里执行。
recorder->stop(); //停止录制