ESM6802是英创公司推出的基于Freescale i.MX6DL双核处理器(ARM Cortex-A9,主频1GHz)的高性能工控主板,已经移植了Linux 4.1.15版本以及Qt 5.8版本。使用Qt的multimedia模块可以方便快捷的进行摄像头应用的开发,本文使用Qt源码中提供的camera例程进行展示,例程代码可从Qt源码中获取或者向我们工程师索要。
我们使用的摄像头是Logitech C310 USB摄像头,ESM6802的Linux系统能够自动识别,正常使用,更多摄像头将在后续进行测试。camera程序运行效果见下图:
在程序中需要首先检查摄像头设备是否可用,示例代码如下:
bool checkCameraAvailability()
{
if (QCameraInfo::availableCameras().count() > 0)
return true;
else
return false;
}
或者下qml文件中使用如下语句:
Item {
property bool isCameraAvailable: QtMultimedia.availableCameras.length > 0
}
之后选择一个摄像头:
c++代码:
QList<QCameraInfo> cameras = QCameraInfo::availableCameras();
foreach (const QCameraInfo &cameraInfo, cameras) {
if (cameraInfo.deviceName() == "mycamera")
camera = new QCamera(cameraInfo);
}
qml代码:
Camera {
deviceId: QtMultimedia.availableCameras[0].deviceId
}
显示摄像头捕捉的画面:
c++代码:
camera = new QCamera;
viewfinder = new QCameraViewfinder;
camera->setViewfinder(viewfinder);
viewfinder->show();
camera->start(); // to start the viewfinder
qml代码:
VideoOutput {
source: camera
Camera {
id: camera
// You can adjust various settings in here
}
}
qtmultimedia模块也引出了API函数来捕获并保存单个画面或者录制一个视频,以及调整摄像头的参数,如曝光等。用户可以自行查阅Qt编程的帮助手册及相关资料进行了解,我们在后续也将提供相应的例程进行展示。
成都英创信息技术有限公司 028-8618 0660