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