6章描画方法とテキスト表示方法

6.1 図形を描画する

どこか他から持ってきた画像の上に、何かしらの絵やちょっとしたものを描きたいと思うことはよくあります。この目的のためにOpenCVは、線、四角形、円などを描画できるいろいろな関数を用意しています。

OpenCVの描画関数はどんな深さ(デプス)の画像でも扱えますが、そのほとんどは最初の3チャンネルにしか影響を与えません。シングルチャンネルの画像の場合は、デフォルトで最初のチャンネルだけになります。描画関数のほとんどは、色、線の太さ、線のタイプ(実際には、線をアンチエイリアスするかどうか)、および描画図形のサブピクセル単位での位置調整をサポートしています。

色を指定するときにはcv::Scalarオブジェクトを使うのがお約束です。ただ、ほとんどの場合、最初の3つの値しか使いません(cv::Scalarの4つ目の値はアルファチャンネルの表現に使えて便利なこともありますが、現在、描画関数はアルファブレンドをサポートしていません)。またこれも約束事として、OpenCVは、マルチチャンネルの画像をカラーでレンダリングする際に、BGRの順序†1を使います(実際に画面に画像を描く描画関数imshow()も、この順序を使っています)。もちろん、みなさんはこのお約束に従わなくてもよいですし、さらに言うと、他のライブラリからのデータをOpenCVヘッダファイルと一緒に使う場合には従わないほうがよいかもしれません。どんな場合でも、OpenCVの核となる関数は、みなさんがチャンネルに割り当てたものの「意味」については何も知らないのです。

[†1] 昔からの習慣の名残のせいで、ちょっと混乱してしまうことがあります。CV_RGB(r, g, b)マクロは ...

Get 詳解 OpenCV 3 ―コンピュータビジョンライブラリを使った画像処理・認識 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.