Armadilloフォーラム

QtでUVCカメラを表示させる

l-l

2015年4月16日 11時44分

初めて投稿させていただきます。西村と申します。

armadillo-840 液晶モデル開発セットにてQtを使って開発を行っています。
Qt内でのUVCカメラの画像の表示方法を検討中ですが、どういった方法がありますでしょうか?

現在はQMLでQtmulitimediaのCameraエレメントを使用して表示させようと思っているのですが、
フォーラム Armadillo-840,QtMulutimediaを利用したい(https://armadillo.atmark-techno.com/forum/armadillo/594)内の
Qtmulitimediaのパッケージを導入し、sample_appのルートファイルシステムでの起動はできています(起動のみ、
プログラム本文はqSoundをコメントアウトしてqDebugを呼んでいるだけのもの)。
この状態でQtMultimediaをimportしたQML UIをatmark-distに統合し、
armadillo上で起動しようとしても「module "QtMultimedia" is not installed」となり起動できません。
また、ATDE上では確認済です。

QMLのQtmultimediaをarmadilloで使うことは可能でしょうか。可能であれば
armadilloへのインストール方法、もしくは別の表示方法に関して情報をお持ちの方、ご教示いただけないでしょうか?

・開発環境
 ・atde5-amd64-20140131
 ・atmark-dist-20140602
 ・linux-3.4-at9

以上、よろしくお願いします。

コメント

at_kojiro.yamada

2015年4月16日 19時22分

> Qt内でのUVCカメラの画像の表示方法を検討中ですが、どういった方法がありますでしょうか?

V4L2 APIでカメラから画像を取得し、
QImage Class, QPainter Classを使って表示する方法があります。

Armadillo-840、ATDE5上で動作するQtアプリケーションのソースコードを添付しますので、
試してみてください。

■添付ファイル内容について
- 添付ファイル : a840-qt-camera-demo.tar.gz

- 内容物 :

a840-qt-camera-demo
|-- animatedtiles.pro
|-- animatedtiles.pro.user
|-- animatedtiles.qrc
|-- config.h
|-- include
| |-- LICENSE
| `-- yuyv_to_rgb.h
|-- main.cpp
|-- main_window.cpp
|-- main_window.h
|-- main_window.ui
|-- v4l2_camera_view.cpp
`-- v4l2_camera_view.h

カメラからの画像取得や描画の処理は
v4l2_camera_view.cpp
に書かれています。

■動作確認方法
大まかな手順は以下のとおりです。

Qt Creatorの使い方に関しては、
Armadillo-840 製品マニュアルをご覧ください。
http://manual.atmark-techno.com/armadillo-840/armadillo-840_product_man…

1. 添付ファイルを解凍する

 [ATDE5]$ tar xzvf a840-qt-camera-demo.tar.gz
 

2. QtCreatorでプロジェクトファイル(animatedtiles.pro)を開く
3. Armadillo-840にカメラを接続し、デバイスファイル名(/dev/video数字)
を確認する

 [ATDE5]$ cat /sys/class/video4linux/video数字/name
 UVC Camera (XXXX:XXXX)
 

4. config.hのDEV_VIDEO_PATHを 3. で確認したデバイスファイル名に変更する
5. QtCreatorでanimatedtilesプロジェクトをビルドする
6. QtCreatorでリモート(Armadillo-840)で実行する

ファイル ファイルの説明
a840-qt-camera-demo.tar.gz カメラ画像表示 Qtアプリケーション ソースコード

l-l

2015年4月17日 10時52分

at_kojiro.yamada様

お世話になります。西村です。

頂いたソースコードでカメラ画像の表示を確認できました。ありがとうございました。