C++とOpenCVを使って線を描画する方法
OpenCVで線を描画するには、始点と終点の2つの座標が必要です。さらに、線を描くためのキャンバス(描画領域)も用意しなければなりません。
線を描画するために必要な要素
OpenCVでは、キャンバスとして機能するのが行列(Mat)です。この行列に対して、線の始点と終点を定義し、加えて以下の情報も指定します。
- 線の色
- 線の太さ
つまり、OpenCVで線を描くには、行列・2つの点・色・線の太さという4つの要素を宣言しておく必要があります。
必要なヘッダーファイル
OpenCVで線を描画するには、<imgproc.hpp>ヘッダーをインクルードします。これは、line()関数がこのヘッダー内で定義されているためです。
line()関数の基本構文
line(whiteMatrix, starting, ending, line_Color, thickness);
各引数の意味は以下の通りです。
- whiteMatrix:描画先となるキャンバス(Matオブジェクト)
- starting:線の始点(Point型)
- ending:線の終点(Point型)
- line_Color:線の色(Scalar型)
- thickness:線の太さ(int型)
サンプルプログラム
次のプログラムは、OpenCVを使って画像上に線を描画する例です。
#include<iostream>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
using namespace cv;
using namespace std;
int main() {
// 白いキャンバスとなる200x200の行列を宣言 //
Mat whiteMatrix(200, 200, CV_8UC3, Scalar(255, 255, 255));
Point starting(50, 50);// 線の始点
Point ending(150, 150);// 線の終点
Scalar line_Color(0, 0, 0);// 線の色(黒)
int thickness = 2;// 線の太さ
namedWindow("GrayImage");// 線を表示するためのウィンドウを宣言
line(whiteMatrix, starting, ending, line_Color, thickness);// line()関数で線を描画 //
imshow("GrayImage", whiteMatrix);// 描画結果を表示 //
waitKey(0);// キー入力を待機
return 0;
}コードの解説
このプログラムでは、まずScalar(255, 255, 255)を指定して、すべてのピクセルが白の200×200サイズの行列を作成しています。これがキャンバスの役割を果たします。
次に、Point構造体を使って始点(50, 50)と終点(150, 150)を定義し、Scalar(0, 0, 0)で黒色を指定、太さは2ピクセルに設定しています。
namedWindow()で表示用ウィンドウを作成した後、line()関数を呼び出すことで、指定した2点間に直線が描画されます。最後にimshow()で結果を画面に表示し、waitKey(0)でキー入力があるまでプログラムを待機させます。
実行結果
このプログラムを実行すると、白いキャンバス上に左上から右下へ向かって黒い斜めの線が引かれた画像が表示されます。
-
JavaとOpenCVで線を描画する方法をわかりやすく解説
Java版OpenCVライブラリのorg.opencv.imgprocパッケージには、Imgprocというクラスが含まれています。画像に直線を描画するには、このクラスが提供するline()メソッドを呼び出します。 line()メソッドのパラメータ line()メソッドは、以下のパラメータを受け取ります。 Matオブジェクト ― 直線を描画する対象となる画像を表します。 Pointオブジェクト2つ ― 直線の始点と終点の座標を表します。 Scalarオブジェクト ― 直線の色をBGR形式で指定します。 整数値 ― 直線の太さを指定します(デフォルト値:1)。 サンプルコード 以下は、白紙の画
-
OpenCVを使って画像に線を描画する方法
この記事では、OpenCVのcv2.line()関数を使用して、画像にシンプルな線を描画する方法を解説します。線の始点・終点・太さ・色を自由に指定できるので、図形の描画や注釈の追加など、さまざまな場面で活用できます。 元画像 処理の流れ(アルゴリズム) ステップ1:cv2をインポートする。 ステップ2:imread()で画像を読み込む。 ステップ3:image.shapeメソッドで画像のサイズ(高さ・幅・チャンネル数)を取得する。 ステップ4:線の始点を定義する。 ステップ5:線の終点を定義する。 ステップ6:線の太さを定義する。 ステップ7:cv2.line()関数で線を描画し、ステップ3