ESM6802支持Qt摄像头应用

 2017-6-29     作者:廖光泽     [nemail]    
[lablebox]

  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程序运行效果见下图:


ESM6802支持Qt摄像头应用.gif


  在程序中需要首先检查摄像头设备是否可用,示例代码如下:

  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编程的帮助手册及相关资料进行了解,我们在后续也将提供相应的例程进行展示。

[lablebox]