ESM6802是英創(chuàng)公司推出的基于Freescale i.MX6DL雙核處理器(ARM Cortex-A9,主頻1GHz)的高性能工控主板,已經(jīng)移植了Linux 4.1.15版本以及Qt 5.8版本。使用Qt的multimedia模塊可以方便快捷的進(jìn)行攝像頭應(yīng)用的開發(fā),本文使用Qt源碼中提供的camera例程進(jìn)行展示,例程代碼可從Qt源碼中獲取或者向我們工程師索要。
我們使用的攝像頭是Logitech C310 USB攝像頭,ESM6802的Linux系統(tǒng)能夠自動識別,正常使用,更多攝像頭將在后續(xù)進(jìn)行測試。camera程序運行效果見下圖:
在程序中需要首先檢查攝像頭設(shè)備是否可用,示例代碼如下:
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函數(shù)來捕獲并保存單個畫面或者錄制一個視頻,以及調(diào)整攝像頭的參數(shù),如曝光等。用戶可以自行查閱Qt編程的幫助手冊及相關(guān)資料進(jìn)行了解,我們在后續(xù)也將提供相應(yīng)的例程進(jìn)行展示。
成都英創(chuàng)信息技術(shù)有限公司 028-8618 0660