v4l2によるRGBの取得②
前回の続きである。
1.参考文献
RGBの画像を簡単に保存するため、PPMフォーマットを利用。
PPMフォーマットは、Optical Learning Blog様を参考にしました。
ありがとうございます。
2.コードの修正
(1)バッファサイズを3倍に増やす
(2)出力ファイル名の拡張子をppmに変更
(3)pixelformatをJPEGからRGB24に変更
(4)ppmファイルのヘッダを追加
include <linux/videodev2.h>
を確認したところ、
RGB3は、RGB24のdefineを利用するよう。
3.サンプルプログラムからの修正点(diff)
//-- (1)バッファサイズを3倍に増やす
19c19,20
< uint8_t* buff = new uint8_t[320*240];
---
> //uint8_t* buff = new uint8_t[320*240];
> uint8_t* buff = new uint8_t[320*240*3];
//-- (2)出力ファイルをjpgからppmに変更
24c25,27
< saveFileBinary("aaa.jpg", buff, size);
---
> //saveFileBinary("aaa.jpg", buff, size);
> saveFileBinary("aaa.ppm", buff, size);
>
//-- (3)pixelformatをJPEGからRGB24に変更
45c48,49
< fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_JPEG;
---
> //fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_JPEG;
> fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_RGB24;
//-- (4)ppmファイルのヘッダを追加
47a52
>
132a138,139
> char header[21];
>
136a144,146
> snprintf(header, sizeof(header), "P6\n320 240\n255\n");
> fputs(header, fp);
>
4.キャプチャー画像の表示
$ gpicview ./aaa.ppm
貼り付けるためppmをjpgに変換しています
5.まとめ
サンプルコードのお陰で、RGB画像を簡単に取得することが出来ました。
これで画像処理が出来るようになりますね。