コンピュータビジョンや画像処理の分野では、OpenCVは強力なライブラリとして知られています。豊富な機能とアルゴリズムを提供しており、QtはクロスプラットフォームのC++ GUIアプリケーション開発フレームワークです。これにより、モダンなデスクトップアプリケーションを作成するためのすべての機能が備わっています。これらを組み合わせることで、強力な画像処理アプリケーションを作成することができます。
この記事では、QtとOpenCVを使用して基本的な画像描画を行う方法について説明します。QtアプリケーションにOpenCVライブラリを統合する方法と、OpenCVの関数を使って画像上での基本的な描画操作を行う方法を調査します。
線の描画
描画関数: この関数は画像上に線を描画します。
void drawLine(Mat& image, Point startPoint, Point endPoint, const Scalar& lineColor, int thickness = 1, int lineStyle = 8, int coordinateShift = 0)
image: 入力画像。startPointとendPoint: 線の両端の点。lineColor: 線の色。thickness: 線の太さ。lineStyle: 線のスタイル。coordinateShift: 座標点の小数桁数。
楕円の描画
描画関数: この関数は画像上に楕円を描画します。
void drawEllipse(Mat& image, Point center, Size axes, double rotationAngle, double startAngle, double endAngle, const Scalar& ellipseColor, int thickness = 1, int lineStyle = 8, int coordinateShift = 0)
image: 入力画像。center: 楕円の中心位置。axes: 楕円の長軸と短軸。rotationAngle: 楕円の回転角度。startAngleとendAngle: 楕円弧の開始角度と終了角度。ellipseColor: 楕円の色。thickness: 楕円の太さ。lineStyle: 楕円のスタイル。coordinateShift: 座標点の小数桁数。
四角形の描画
描画関数: この関数は画像上に四角形を描画します。
void drawRectangle(Mat& image, Point corner1, Point corner2, const Scalar& rectangleColor, int thickness = 1, int lineStyle = 8, int coordinateShift = 0)
image: 入力画像。corner1とcorner2: 四角形の2つの頂点。rectangleColor: 四角形の色。thickness: 四角形の太さ。lineStyle: 四角形のスタイル。coordinateShift: 座標点の小数桁数。
円の描画
描画関数: この関数は画像上に円を描画します。
void drawCircle(Mat& image, Point center, int radius, const Scalar& circleColor, int thickness = 1, int lineStyle = 8, int coordinateShift = 0)
image: 入力画像。center: 円の中心位置。radius: 円の半径。circleColor: 円の色。thickness: 円の太さ。lineStyle: 円のスタイル。coordinateShift: 座標点の小数桁数。
多角形の塗りつぶし
描画関数: この関数は画像上に多角形を塗りつぶします。
void fillPolygon(Mat& image, const Point** vertices, const int* vertexCount, int polygonCount, const Scalar& fillColor, int lineStyle = 8, int coordinateShift = 0, Point offset = Point())
image: 入力画像。vertices: 多角形の頂点。vertexCount: 多角形の頂点数。polygonCount: 描画する多角形の数。fillColor: 多角形の色。lineStyle: 多角形のスタイル。coordinateShift: 座標点の小数桁数。offset: すべての点のオフセット。
テキストの描画
void drawText(Mat& image, const String& text, Point origin, int fontType, double fontSize, Scalar textColor, int thickness = 1, int lineStyle = 8, bool isBottomLeftOrigin = false)
image: 入力画像。ここにテキストを描画します。text: 描画する文字列。origin: テキストが始まる点。この点は文字列の左下角です。fontType: フォントタイプ。OpenCVはいくつかのフォントタイプを提供しています(例:FONT_HERSHEY_SIMPLEX, FONT_HERSHEY_PLAINなど)。fontSize: フォントサイズの倍率。この値はテキストの大きさを決定します。textColor: テキストの色。BGR色を定義するためにScalarオブジェクトを使用できます。thickness: 線の太さ。負の値の場合、テキストは塗りつぶされます。lineStyle: 線のスタイル。isBottomLeftOrigin: ブール値です。真の場合、画像データの原点は左下角にあります。それ以外の場合、左上角にあります。