UVCでのカラーバー表示ができたので、今度は文字を表示してみることにしました。カメラに送る画像情報はYUV422と呼ばれる形式で送るのですが、この形式では輝度情報は各画素についているものの、色差情報は2画素をペアとして扱ってつけています。そのため、1画素毎に輝度は変えられても、色を変えることができません。そのため、文字フォントを描画した時に2画素ペアにまたがっていればきちんと色がつきますが、ペアの片側にしか描画しないと文字の輪郭の色がおかしくなってしまいます。そこで、必ず文字のグリフを描画する際には横に2倍に引き伸ばして、必ず2画素ペアにまたがるようにして表示してやりました。
もともとの画面サイズが160×120のところ、文字を横に2倍にしていますので、実質的には80×60ドット相当の画面となってしまっています。ここでは、STM32CubeL4に含まれていた Font12という7×12ドットのフォントを使っています。文字情報量が少ないうえに画面の更新レートも少ないので、表示装置として使うには制約が大きいわけですが、時計とか気温/気圧表示のような用途には充分に使えるのではないでしょうか。
YUV表示でもUVは常に同じで輝度(Y)しか変化させないということにしてやれば、文字幅を2倍にしなくても1画素ごとに輝度を変えて文字表示することができますので、こちらも試してみました。背景色は (Y, U, V) = (0, 0, 0), 文字色は (Y, U, V) = (255, 0, 0)として描画してやると...
文字色のYの値を変化させてやれば、こうなります...
なんか、昔のグリーンモニタ表示を彷彿させますなぁ。
もともとの画面サイズが160×120のところ、文字を横に2倍にしていますので、実質的には80×60ドット相当の画面となってしまっています。ここでは、STM32CubeL4に含まれていた Font12という7×12ドットのフォントを使っています。文字情報量が少ないうえに画面の更新レートも少ないので、表示装置として使うには制約が大きいわけですが、時計とか気温/気圧表示のような用途には充分に使えるのではないでしょうか。
YUV表示でもUVは常に同じで輝度(Y)しか変化させないということにしてやれば、文字幅を2倍にしなくても1画素ごとに輝度を変えて文字表示することができますので、こちらも試してみました。背景色は (Y, U, V) = (0, 0, 0), 文字色は (Y, U, V) = (255, 0, 0)として描画してやると...
文字色のYの値を変化させてやれば、こうなります...
なんか、昔のグリーンモニタ表示を彷彿させますなぁ。