見出し画像

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に変換しています

画像1

5.まとめ

サンプルコードのお陰で、RGB画像を簡単に取得することが出来ました。
これで画像処理が出来るようになりますね。