OpenCV 4.13.0
Open Source Computer Vision
読み込み中...
検索中...
見つかりません
🤖 AIによる機械翻訳(非公式) — これは OpenCV 4.13.0 公式リファレンス(英語)を AI (Claude) で自動翻訳したものです。訳に誤りを含む場合があります。正確な情報は 公式英語版(原文) を参照してください。
基本的な描画

次のチュートリアル: OpenCVによる乱数生成とテキスト描画

原著者Ana Huamán
互換性OpenCV >= 3.0

目標

このチュートリアルでは、以下の方法を学ぶ:

  • OpenCV関数 line() を使って直線を描く
  • OpenCV関数 ellipse() を使って楕円を描く
  • OpenCV関数 rectangle() を使って矩形を描く
  • OpenCV関数 circle() を使ってを描く
  • OpenCV関数 fillPoly() を使って塗りつぶした多角形を描く

OpenCVの理論

Point

画像座標 \(x\) と \(y\) で指定される2次元の点を表す。次のように定義できる:

Scalar

  • 4要素のベクトルを表す。型Scalarは、ピクセル値を渡す目的でOpenCVにおいて広く使われている。
  • このチュートリアルでは、BGRの色値(3つの引数)を表すためにこれを多用する。使わない場合、最後の引数は定義しなくてよい。
  • 例を見てみよう。色の引数を求められて次のように指定すると: 次のようなBGRの色を定義していることになる: Blue = aGreen = bRed = c

コード

説明

ここでは2つの例(原子と城)を描く予定なので、それらを表示するために2つの画像と2つのウィンドウを作成する必要がある。

さまざまな幾何学的図形を描くための関数を作成した。たとえば原子を描くには、MyEllipseMyFilledCircle を使った:

そして城を描くには、MyLinerectangle、および MyPolygon を使った:

これらの各関数の中身を確認しよう:

MyLine

  • As we can see, MyLine just call the function line() , which does the following:
    • start から点 end まで直線を描く
    • 直線は画像 img 上に表示される
    • 直線の色は ( 0, 0, 0 ) で定義され、これは に対応するRGB値である
    • 直線の太さは thickness(この場合は2)に設定される
    • 直線は8連結である(lineType = 8)

MyEllipse

  • From the code above, we can observe that the function ellipse() draws an ellipse such that:
    • 楕円は画像 img 上に表示される
    • 楕円の中心は点 (w/2, w/2) に位置し、サイズ (w/4, w/16) のボックスに収まる
    • 楕円は angle 度だけ回転される
    • 楕円は 0 度から 360 度までの円弧を描く
    • 図形の色は ( 255, 0, 0 ) であり、BGR値で青を意味する。
    • 楕円の thickness は2である。

MyFilledCircle

  • Similar to the ellipse function, we can observe that circle receives as arguments:
    • 円を描画する画像 (img)
    • center で表される円の中心
    • 円の半径: w/32
    • 円の色: ( 0, 0, 255 )。これはBGRで赤 (Red)を意味する
    • thickness = -1 なので、円は塗りつぶして描画される。

MyPolygon

  • To draw a filled polygon we use the function fillPoly() . We note that:
    • 多角形は img 上に描画される
    • 多角形の頂点は ppt に含まれる点の集合である
    • 多角形の色は ( 255, 255, 255 ) で定義され、これは白 (white)のBGR値である

rectangle

  • Finally we have the cv::rectangle function (we did not create a special function for this guy). We note that:
    • 矩形は rook_image 上に描画される
    • 矩形の対角に位置する2つの頂点は ( 0, 7*w/8 )( w, w ) で定義される
    • 矩形の色は ( 0, 255, 255 ) で与えられ、これは黄 (yellow)のBGR値である
    • thicknessの値が FILLED (-1) で与えられているため、矩形は塗りつぶされる。

結果

プログラムをコンパイルして実行すると、次のような結果が得られるはずである: