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

詳細説明

描画関数は任意のビット深度の行列/画像を扱える。図形の境界はアンチエイリアスを用いて描画できる(現時点では8ビット画像でのみ実装)。すべての関数には引数 color が含まれ、カラー画像では RGB 値(Scalar コンストラクタで構成できる)を、グレースケール画像では輝度を用いる。カラー画像では、チャンネルの順序は通常 青(Blue), 緑(Green), 赤(Red) である。これは imshow, imread, imwrite が想定する順序である。したがって、Scalar コンストラクタを使って色を作る場合は、次のようになる:

\[\texttt{Scalar} (blue \_ component, green \_ component, red \_ component[, alpha \_ component])\]

独自の画像レンダリングや入出力関数を使う場合は、任意のチャンネル順序を用いてよい。描画関数は各チャンネルを独立に処理し、チャンネル順序や使用する色空間に依存しない。画像全体は cvtColor を使って BGR から RGB へ、あるいは別の色空間へ変換できる。

描画する図形が画像の一部または全体が外側にある場合、描画関数はそれをクリッピングする。また、多くの描画関数はサブピクセル精度で指定したピクセル座標を扱える。これは、座標を整数としてエンコードした固定小数点数として渡せることを意味する。小数部のビット数は引数 shift で指定し、実際の点座標は \(\texttt{Point}(x,y)\rightarrow\texttt{Point2f}(x*2^{-shift},y*2^{-shift})\) として計算される。この機能はアンチエイリアス処理された図形を描画する際に特に効果的である。

覚え書き
これらの関数は、対象画像が4チャンネルの場合にアルファ透過をサポートしない。この場合、color[3] は再描画されるピクセルへ単純にコピーされる。したがって、半透明の図形を描画したい場合は、別のバッファに描画してからメイン画像とブレンドすればよい。

クラス

class  cv::FontFace
 truetype/opentype 等のフォント(すなわち Freetype の FT_Face)の上に構築されたラッパー。 続き...
 
class  cv::LineIterator
 ラスタ線分上のすべてのピクセルを反復処理するためのクラス。 詳細...
 

マクロ定義

#define CV_RGB(r, g, b)
 

列挙型

enum  cv::HersheyFonts {
  cv::FONT_HERSHEY_SIMPLEX = 0 ,
  cv::FONT_HERSHEY_PLAIN = 1 ,
  cv::FONT_HERSHEY_DUPLEX = 2 ,
  cv::FONT_HERSHEY_COMPLEX = 3 ,
  cv::FONT_HERSHEY_TRIPLEX = 4 ,
  cv::FONT_HERSHEY_COMPLEX_SMALL = 5 ,
  cv::FONT_HERSHEY_SCRIPT_SIMPLEX = 6 ,
  cv::FONT_HERSHEY_SCRIPT_COMPLEX = 7 ,
  cv::FONT_ITALIC = 16
}
 
enum  cv::LineTypes {
  cv::FILLED = -1 ,
  cv::LINE_4 = 4 ,
  cv::LINE_8 = 8 ,
  cv::LINE_AA = 16
}
 
enum  cv::MarkerTypes {
  cv::MARKER_CROSS = 0 ,
  cv::MARKER_TILTED_CROSS = 1 ,
  cv::MARKER_STAR = 2 ,
  cv::MARKER_DIAMOND = 3 ,
  cv::MARKER_SQUARE = 4 ,
  cv::MARKER_TRIANGLE_UP = 5 ,
  cv::MARKER_TRIANGLE_DOWN = 6
}
 
enum  cv::PutTextFlags {
  cv::PUT_TEXT_ALIGN_LEFT =0 ,
  cv::PUT_TEXT_ALIGN_CENTER =1 ,
  cv::PUT_TEXT_ALIGN_RIGHT =2 ,
  cv::PUT_TEXT_ALIGN_MASK =3 ,
  cv::PUT_TEXT_ORIGIN_TL =0 ,
  cv::PUT_TEXT_ORIGIN_BL =32 ,
  cv::PUT_TEXT_WRAP =128
}
 各種の put text フラグを定義する。続き...
 

関数

void cv::arrowedLine (InputOutputArray img, Point pt1, Point pt2, const Scalar &color, int thickness=1, int line_type=8, int shift=0, double tipLength=0.1)
 1つ目の点から2つ目の点を指す矢印の線分を描画する。
 
void cv::circle (InputOutputArray img, Point center, int radius, const Scalar &color, int thickness=1, int lineType=LINE_8, int shift=0)
 円を描画する。
 
bool cv::clipLine (Rect imgRect, Point &pt1, Point &pt2)
 
bool cv::clipLine (Size imgSize, Point &pt1, Point &pt2)
 画像矩形に対して線をクリップする。
 
bool cv::clipLine (Size2l imgSize, Point2l &pt1, Point2l &pt2)
 
void cv::drawContours (InputOutputArray image, InputArrayOfArrays contours, int contourIdx, const Scalar &color, int thickness=1, int lineType=LINE_8, InputArray hierarchy=noArray(), int maxLevel=INT_MAX, Point offset=Point())
 輪郭の外形線、または塗りつぶされた輪郭を描画する。
 
void cv::drawFrameAxes (InputOutputArray image, InputArray cameraMatrix, InputArray distCoeffs, InputArray rvec, InputArray tvec, float length, int thickness=3)
 姿勢推定結果から、ワールド/物体座標系の座標軸を描画する。
 
void cv::drawMarker (InputOutputArray img, Point position, const Scalar &color, int markerType=MARKER_CROSS, int markerSize=20, int thickness=1, int line_type=8)
 画像内のあらかじめ定められた位置にマーカーを描画する。
 
void cv::ellipse (InputOutputArray img, const RotatedRect &box, const Scalar &color, int thickness=1, int lineType=LINE_8)
 
void cv::ellipse (InputOutputArray img, Point center, Size axes, double angle, double startAngle, double endAngle, const Scalar &color, int thickness=1, int lineType=LINE_8, int shift=0)
 単純なまたは太い楕円弧を描画する、あるいは楕円セクタを塗りつぶす。
 
void cv::ellipse2Poly (Point center, Size axes, int angle, int arcStart, int arcEnd, int delta, std::vector< Point > &pts)
 楕円弧を折れ線で近似する。
 
void cv::ellipse2Poly (Point2d center, Size2d axes, int angle, int arcStart, int arcEnd, int delta, std::vector< Point2d > &pts)
 
void cv::fillConvexPoly (InputOutputArray img, const Point *pts, int npts, const Scalar &color, int lineType=LINE_8, int shift=0)
 
void cv::fillConvexPoly (InputOutputArray img, InputArray points, const Scalar &color, int lineType=LINE_8, int shift=0)
 凸多角形を塗りつぶす。
 
void cv::fillPoly (InputOutputArray img, const Point **pts, const int *npts, int ncontours, const Scalar &color, int lineType=LINE_8, int shift=0, Point offset=Point())
 
void cv::fillPoly (InputOutputArray img, InputArrayOfArrays pts, const Scalar &color, int lineType=LINE_8, int shift=0, Point offset=Point())
 1つ以上の多角形で囲まれた領域を塗りつぶす。
 
double cv::getFontScaleFromHeight (const int fontFace, const int pixelHeight, const int thickness=1)
 指定した高さ(ピクセル単位)を実現するために使用するフォント固有のサイズを計算する。
 
Size cv::getTextSize (const String &text, int fontFace, double fontScale, int thickness, int *baseLine)
 テキスト文字列の幅と高さを計算する。
 
Rect cv::getTextSize (Size imgsize, const String &text, Point org, FontFace &fface, int size, int weight=0, PutTextFlags flags=PUT_TEXT_ALIGN_LEFT, Range wrap=Range())
 テキストのバウンディング矩形を計算する。
 
void cv::line (InputOutputArray img, Point pt1, Point pt2, const Scalar &color, int thickness=1, int lineType=LINE_8, int shift=0)
 2点を結ぶ線分を描画する。
 
void cv::polylines (InputOutputArray img, const Point *const *pts, const int *npts, int ncontours, bool isClosed, const Scalar &color, int thickness=1, int lineType=LINE_8, int shift=0)
 
void cv::polylines (InputOutputArray img, InputArrayOfArrays pts, bool isClosed, const Scalar &color, int thickness=1, int lineType=LINE_8, int shift=0)
 複数の折れ線曲線を描画する。
 
void cv::putText (InputOutputArray img, const String &text, Point org, int fontFace, double fontScale, Scalar color, int thickness=1, int lineType=LINE_8, bool bottomLeftOrigin=false)
 テキスト文字列を描画する。
 
Point cv::putText (InputOutputArray img, const String &text, Point org, Scalar color, FontFace &fface, int size, int weight=0, PutTextFlags flags=PUT_TEXT_ALIGN_LEFT, Range wrap=Range())
 指定したフォントを用いてテキスト文字列を描画する。
 
void cv::rectangle (InputOutputArray img, Point pt1, Point pt2, const Scalar &color, int thickness=1, int lineType=LINE_8, int shift=0)
 単純な、太い、または塗りつぶされた、垂直水平方向の矩形を描画する。
 
void cv::rectangle (InputOutputArray img, Rect rec, const Scalar &color, int thickness=1, int lineType=LINE_8, int shift=0)
 

マクロ定義詳解

◆ CV_RGB

#define CV_RGB ( r,
g,
b )

#include <opencv2/imgproc.hpp>

Value:
cv::Scalar((b), (g), (r), 0)
Scalar_< double > Scalar
Definition types.hpp:712

OpenCV のカラーチャンネル順序は BGR[A]

列挙型詳解

◆ HersheyFonts

#include <opencv2/imgproc.hpp>

Hershey フォント https://en.wikipedia.org/wiki/Hershey_fonts の一部のみがサポートされている

列挙値
FONT_HERSHEY_SIMPLEX 
Python: cv.FONT_HERSHEY_SIMPLEX

標準サイズのサンセリフフォント

FONT_HERSHEY_PLAIN 
Python: cv.FONT_HERSHEY_PLAIN

小サイズのサンセリフフォント

FONT_HERSHEY_DUPLEX 
Python: cv.FONT_HERSHEY_DUPLEX

標準サイズのサンセリフフォント(FONT_HERSHEY_SIMPLEX より複雑)

FONT_HERSHEY_COMPLEX 
Python: cv.FONT_HERSHEY_COMPLEX

標準サイズのセリフフォント

FONT_HERSHEY_TRIPLEX 
Python: cv.FONT_HERSHEY_TRIPLEX

標準サイズのセリフ体フォント(FONT_HERSHEY_COMPLEX より複雑)

FONT_HERSHEY_COMPLEX_SMALL 
Python: cv.FONT_HERSHEY_COMPLEX_SMALL

FONT_HERSHEY_COMPLEX の小型版

FONT_HERSHEY_SCRIPT_SIMPLEX 
Python: cv.FONT_HERSHEY_SCRIPT_SIMPLEX

手書き風フォント

FONT_HERSHEY_SCRIPT_COMPLEX 
Python: cv.FONT_HERSHEY_SCRIPT_COMPLEX

FONT_HERSHEY_SCRIPT_SIMPLEX のより複雑な変種

FONT_ITALIC 
Python: cv.FONT_ITALIC

イタリック体フォント用のフラグ

◆ LineTypes

#include <opencv2/imgproc.hpp>

線の種類

列挙値
FILLED 
Python: cv.FILLED
LINE_4 
Python: cv.LINE_4

4連結の線

LINE_8 
Python: cv.LINE_8

8連結の線

LINE_AA 
Python: cv.LINE_AA

アンチエイリアス処理された線

◆ MarkerTypes

#include <opencv2/imgproc.hpp>

cv::drawMarker 関数で使用できるマーカータイプの集合

列挙値
MARKER_CROSS 
Python: cv.MARKER_CROSS

十字(クロスヘア)マーカー形状。

MARKER_TILTED_CROSS 
Python: cv.MARKER_TILTED_CROSS

45度傾けた十字マーカー形状。

MARKER_STAR 
Python: cv.MARKER_STAR

星形マーカー形状。十字と傾けた十字を組み合わせたもの。

MARKER_DIAMOND 
Python: cv.MARKER_DIAMOND

ひし形マーカー形状。

MARKER_SQUARE 
Python: cv.MARKER_SQUARE

正方形マーカー形状。

MARKER_TRIANGLE_UP 
Python: cv.MARKER_TRIANGLE_UP

上向きの三角形マーカー形状。

MARKER_TRIANGLE_DOWN 
Python: cv.MARKER_TRIANGLE_DOWN

下向きの三角形マーカー形状。

◆ PutTextFlags

#include <opencv2/imgproc.hpp>

各種の put text フラグを定義する。

列挙値
PUT_TEXT_ALIGN_LEFT 
Python: cv.PUT_TEXT_ALIGN_LEFT
PUT_TEXT_ALIGN_CENTER 
Python: cv.PUT_TEXT_ALIGN_CENTER
PUT_TEXT_ALIGN_RIGHT 
Python: cv.PUT_TEXT_ALIGN_RIGHT
PUT_TEXT_ALIGN_MASK 
Python: cv.PUT_TEXT_ALIGN_MASK
PUT_TEXT_ORIGIN_TL 
Python: cv.PUT_TEXT_ORIGIN_TL
PUT_TEXT_ORIGIN_BL 
Python: cv.PUT_TEXT_ORIGIN_BL
PUT_TEXT_WRAP 
Python: cv.PUT_TEXT_WRAP

関数詳解

◆ arrowedLine()

void cv::arrowedLine ( InputOutputArray img,
Point pt1,
Point pt2,
const Scalar & color,
int thickness = 1,
int line_type = 8,
int shift = 0,
double tipLength = 0.1 )
Python:
cv.arrowedLine(img, pt1, pt2, color[, thickness[, line_type[, shift[, tipLength]]]]) -> img

#include <opencv2/imgproc.hpp>

1番目の点から2番目の点へ向かう矢印のセグメントを描画する。

cv::arrowedLine 関数は、画像内の点 pt1 と pt2 の間に矢印を描画する。line も参照のこと。

引数
img画像。
pt1矢印の始点。
pt2矢印が指す先の点。
color線の色。
thickness線の太さ。
line_type線の種類。LineTypes を参照。
shift点の座標における小数部のビット数。
tipLength矢印の長さに対する矢じり部分の長さ。

◆ circle()

void cv::circle ( InputOutputArray img,
Point center,
int radius,
const Scalar & color,
int thickness = 1,
int lineType = LINE_8,
int shift = 0 )
Python:
cv.circle(img, center, radius, color[, thickness[, lineType[, shift]]]) -> img

#include <opencv2/imgproc.hpp>

円を描画する。

cv::circle 関数は、指定した中心と半径を持つ単純な円または塗りつぶした円を描画する。

引数
img円が描画される画像。
center円の中心。
radius円の半径。
color円の色。
thickness正の値の場合は円の輪郭線の太さ。FILLED のような負の値の場合は、塗りつぶされた円を描画することを意味する。
lineType円の境界の種類。LineTypes を参照。
shift中心の座標および半径の値における小数部のビット数。

◆ clipLine() [1/3]

bool cv::clipLine ( Rect imgRect,
Point & pt1,
Point & pt2 )
Python:
cv.clipLine(imgRect, pt1, pt2) -> retval, pt1, pt2

#include <opencv2/imgproc.hpp>

これは利便性のために提供されているオーバーロードされたメンバ関数である。上記の関数とは、受け取る引数のみが異なる。

引数
imgRect画像の矩形。
pt1線の1番目の点。
pt2線の2番目の点。

◆ clipLine() [2/3]

bool cv::clipLine ( Size imgSize,
Point & pt1,
Point & pt2 )
Python:
cv.clipLine(imgRect, pt1, pt2) -> retval, pt1, pt2

#include <opencv2/imgproc.hpp>

画像の矩形に対して線をクリッピングする。

cv::clipLine 関数は、指定した矩形内に完全に収まる線分の部分を計算する。線分が矩形の完全に外側にある場合は false を返す。それ以外の場合は true を返す。

引数
imgSize画像のサイズ。画像の矩形は Rect(0, 0, imgSize.width, imgSize.height) となる。
pt1線の1番目の点。
pt2線の2番目の点。

◆ clipLine() [3/3]

bool cv::clipLine ( Size2l imgSize,
Point2l & pt1,
Point2l & pt2 )
Python:
cv.clipLine(imgRect, pt1, pt2) -> retval, pt1, pt2

#include <opencv2/imgproc.hpp>

これは利便性のために提供されているオーバーロードされたメンバ関数である。上記の関数とは、受け取る引数のみが異なる。

引数
imgSize画像のサイズ。画像の矩形は Rect(0, 0, imgSize.width, imgSize.height) となる。
pt1線の1番目の点。
pt2線の2番目の点。

◆ drawContours()

void cv::drawContours ( InputOutputArray image,
InputArrayOfArrays contours,
int contourIdx,
const Scalar & color,
int thickness = 1,
int lineType = LINE_8,
InputArray hierarchy = noArray(),
int maxLevel = INT_MAX,
Point offset = Point() )
Python:
cv.drawContours(image, contours, contourIdx, color[, thickness[, lineType[, hierarchy[, maxLevel[, offset]]]]]) -> image

#include <opencv2/imgproc.hpp>

輪郭の外形線、または塗りつぶした輪郭を描画する。

この関数は、\(\texttt{thickness} \ge 0\) の場合は画像に輪郭の外形線を描画し、\(\texttt{thickness}<0\) の場合は輪郭で囲まれた領域を塗りつぶす。以下の例は、2値画像から連結成分を取得しラベル付けする方法を示す: :

using namespace cv;
using namespace std;
int main( int argc, char** argv )
{
Mat src;
// the first command-line parameter must be a filename of the binary
// (black-n-white) image
if( argc != 2 || !(src=imread(argv[1], IMREAD_GRAYSCALE)).data)
return -1;
Mat dst = Mat::zeros(src.rows, src.cols, CV_8UC3);
src = src > 1;
namedWindow( "Source", 1 );
imshow( "Source", src );
vector<vector<Point> > contours;
vector<Vec4i> hierarchy;
findContours( src, contours, hierarchy,
RETR_CCOMP, CHAIN_APPROX_SIMPLE );
// iterate through all the top-level contours,
// draw each connected component with its own random color
int idx = 0;
for( ; idx >= 0; idx = hierarchy[idx][0] )
{
Scalar color( rand()&255, rand()&255, rand()&255 );
drawContours( dst, contours, idx, color, FILLED, 8, hierarchy );
}
namedWindow( "Components", 1 );
imshow( "Components", dst );
waitKey(0);
}
Comma-separated Matrix Initializer.
Definition mat.hpp:964
int cols
Definition mat.hpp:2488
int rows
the number of rows and columns or (-1, -1) when the matrix has more than 2 dimensions
Definition mat.hpp:2488
#define CV_8UC3
Definition interface.h:79
void imshow(const String &winname, InputArray mat)
Displays an image in the specified window.
void namedWindow(const String &winname, int flags=WINDOW_AUTOSIZE)
Creates a window.
Mat imread(const String &filename, int flags=IMREAD_COLOR_BGR)
Loads an image from a file.
void drawContours(InputOutputArray image, InputArrayOfArrays contours, int contourIdx, const Scalar &color, int thickness=1, int lineType=LINE_8, InputArray hierarchy=noArray(), int maxLevel=INT_MAX, Point offset=Point())
Draws contours outlines or filled contours.
void findContours(InputArray image, OutputArrayOfArrays contours, OutputArray hierarchy, int mode, int method, Point offset=Point())
Finds contours in a binary image.
int main(int argc, char *argv[])
Definition highgui_qt.cpp:3
Definition core.hpp:107
STL namespace.
引数
image出力画像。
contoursすべての入力輪郭。各輪郭は点のベクトルとして格納される。
contourIdx描画する輪郭を示す引数。負の値の場合はすべての輪郭が描画される。
color輪郭の色。
thickness輪郭を描画する線の太さ。負の値の場合(例: thickness=FILLED)は、輪郭の内部が塗りつぶされる。
lineType線の連結性。LineTypes を参照。
hierarchy階層構造に関する省略可能な情報。一部の輪郭のみを描画したい場合にのみ必要となる(maxLevel を参照)。
maxLevel描画する輪郭の最大レベル。0 の場合は指定された輪郭のみが描画される。1 の場合はその輪郭とそのすべての入れ子の輪郭が描画される。2 の場合は輪郭、すべての入れ子の輪郭、さらにその入れ子の輪郭…というように描画される。この引数は階層構造が利用可能な場合にのみ考慮される。
offset省略可能な輪郭のシフト引数。描画されるすべての輪郭を指定した \(\texttt{offset}=(dx,dy)\) だけシフトする。
覚え書き
thickness=FILLED の場合、この関数は階層データが与えられていなくても、穴を持つ連結成分を正しく処理するように設計されている。これは、すべての外形線を偶奇規則(even-odd rule)を用いてまとめて解析することで行われる。別々に取得した輪郭をまとめたものでは、誤った結果を生じる可能性がある。この問題を解決するには、輪郭のサブグループごとに drawContours を個別に呼び出すか、引数 contourIdx を使ってコレクションを反復処理する必要がある。

◆ drawFrameAxes()

void cv::drawFrameAxes ( InputOutputArray image,
InputArray cameraMatrix,
InputArray distCoeffs,
InputArray rvec,
InputArray tvec,
float length,
int thickness = 3 )
Python:
cv.drawFrameAxes(image, cameraMatrix, distCoeffs, rvec, tvec, length[, thickness]) -> image

#include <opencv2/imgproc.hpp>

姿勢推定からワールド/オブジェクト座標系の軸を描画する。

参照
solvePnP
引数
image入出力画像。1または3チャンネルでなければならない。チャンネル数は変更されない。
cameraMatrixカメラの内部パラメータの 3x3 浮動小数点入力行列。\(\cameramatrix{A}\)
distCoeffs歪み係数の入力ベクトル \(\distcoeffs\)。ベクトルが空の場合、歪み係数はゼロと仮定される。
rvec回転ベクトル(Rodrigues を参照)。tvec とともに、点をモデル座標系からカメラ座標系へ変換する。
tvec並進ベクトル。
length描画する軸の長さ。tvec と同じ単位(通常はメートル)。
thickness描画する軸の線の太さ。

この関数は、カメラフレームに対するワールド/オブジェクト座標系の軸を描画する。OX は赤、OY は緑、OZ は青で描画される。

◆ drawMarker()

void cv::drawMarker ( InputOutputArray img,
Point position,
const Scalar & color,
int markerType = MARKER_CROSS,
int markerSize = 20,
int thickness = 1,
int line_type = 8 )
Python:
cv.drawMarker(img, position, color[, markerType[, markerSize[, thickness[, line_type]]]]) -> img

#include <opencv2/imgproc.hpp>

画像内のあらかじめ定められた位置にマーカーを描画する。

cv::drawMarker 関数は、画像内の指定した位置にマーカーを描画する。現時点ではいくつかのマーカータイプがサポートされている。詳細は MarkerTypes を参照のこと。

引数
img画像。
position十字マーカーを配置する点。
color線の色。
markerType使用するマーカーの具体的な種類。MarkerTypes を参照。
thickness線の太さ。
line_type線の種類。LineTypes を参照。
markerSizeマーカー軸の長さ [デフォルト = 20 ピクセル]

◆ ellipse() [1/2]

void cv::ellipse ( InputOutputArray img,
const RotatedRect & box,
const Scalar & color,
int thickness = 1,
int lineType = LINE_8 )
Python:
cv.ellipse(img, center, axes, angle, startAngle, endAngle, color[, thickness[, lineType[, shift]]]) -> img
cv.ellipse(img, box, color[, thickness[, lineType]]) -> img

#include <opencv2/imgproc.hpp>

これは利便性のために提供されているオーバーロードされたメンバ関数である。上記の関数とは、受け取る引数のみが異なる。

引数
img画像。
boxRotatedRect による楕円の別表現。これは、回転矩形に内接する楕円を関数が描画することを意味する。
color楕円の色。
thickness正の値の場合は楕円弧の輪郭線の太さ。それ以外の場合は、塗りつぶされた楕円扇形を描画することを示す。
lineType楕円の境界の種類。LineTypes を参照。

◆ ellipse() [2/2]

void cv::ellipse ( InputOutputArray img,
Point center,
Size axes,
double angle,
double startAngle,
double endAngle,
const Scalar & color,
int thickness = 1,
int lineType = LINE_8,
int shift = 0 )
Python:
cv.ellipse(img, center, axes, angle, startAngle, endAngle, color[, thickness[, lineType[, shift]]]) -> img
cv.ellipse(img, box, color[, thickness[, lineType]]) -> img

#include <opencv2/imgproc.hpp>

単純なまたは太い楕円弧を描画するか、楕円のセクタを塗りつぶす。

より多くの引数を持つ cv::ellipse 関数は、楕円の外形線、塗りつぶした楕円、楕円弧、または塗りつぶした楕円のセクタを描画する。描画コードは一般的なパラメトリック形式を用いる。楕円弧の境界の近似には区分線形曲線を使用する。楕円の描画をより細かく制御したい場合は、ellipse2Poly を使って曲線を取得し、polylines で描画するか、fillPoly で塗りつぶせばよい。関数の最初の変種を使い、弧ではなく楕円全体を描画したい場合は、startAngle=0endAngle=360 を渡す。startAngleendAngle より大きい場合は、両者は入れ替えられる。下図は、青い弧を描画するための引数の意味を説明している。

Parameters of Elliptic Arc
引数
img画像。
center楕円の中心。
axes楕円の主軸の長さの半分。
angle楕円の回転角度(度)。
startAngle楕円弧の開始角度(度)。
endAngle楕円弧の終了角度(度)。
color楕円の色。
thickness正の値の場合は楕円弧の輪郭線の太さ。それ以外の場合は、塗りつぶされた楕円扇形を描画することを示す。
lineType楕円の境界の種類。LineTypes を参照。
shift中心の座標および軸の値における小数部のビット数。

◆ ellipse2Poly() [1/2]

void cv::ellipse2Poly ( Point center,
Size axes,
int angle,
int arcStart,
int arcEnd,
int delta,
std::vector< Point > & pts )
Python:
cv.ellipse2Poly(center, axes, angle, arcStart, arcEnd, delta) -> pts

#include <opencv2/imgproc.hpp>

楕円弧をポリラインで近似する。

ellipse2Poly 関数は、指定した楕円弧を近似するポリラインの頂点を計算する。これは ellipse で使用される。arcStartarcEnd より大きい場合は、両者は入れ替えられる。

引数
center円弧の中心。
axes楕円の主軸の長さの半分。詳細は ellipse を参照。
angle楕円の回転角度(度)。詳細は ellipse を参照。
arcStart楕円弧の開始角度(度)。
arcEnd楕円弧の終了角度(度)。
deltaポリラインの連続する頂点間の角度。近似の精度を決定する。
ptsポリラインの頂点を格納する出力ベクトル。

◆ ellipse2Poly() [2/2]

void cv::ellipse2Poly ( Point2d center,
Size2d axes,
int angle,
int arcStart,
int arcEnd,
int delta,
std::vector< Point2d > & pts )
Python:
cv.ellipse2Poly(center, axes, angle, arcStart, arcEnd, delta) -> pts

#include <opencv2/imgproc.hpp>

これは利便性のために提供されているオーバーロードされたメンバ関数である。上記の関数とは、受け取る引数のみが異なる。

引数
center円弧の中心。
axes楕円の主軸の長さの半分。詳細は ellipse を参照。
angle楕円の回転角度(度)。詳細は ellipse を参照。
arcStart楕円弧の開始角度(度)。
arcEnd楕円弧の終了角度(度)。
deltaポリラインの連続する頂点間の角度。近似の精度を決定する。
ptsポリラインの頂点を格納する出力ベクトル。

◆ fillConvexPoly() [1/2]

void cv::fillConvexPoly ( InputOutputArray img,
const Point * pts,
int npts,
const Scalar & color,
int lineType = LINE_8,
int shift = 0 )
Python:
cv.fillConvexPoly(img, points, color[, lineType[, shift]]) -> img

#include <opencv2/imgproc.hpp>

これは利便性のために提供されているオーバーロードされたメンバ関数である。上記の関数とは、受け取る引数のみが異なる。

◆ fillConvexPoly() [2/2]

void cv::fillConvexPoly ( InputOutputArray img,
InputArray points,
const Scalar & color,
int lineType = LINE_8,
int shift = 0 )
Python:
cv.fillConvexPoly(img, points, color[, lineType[, shift]]) -> img

#include <opencv2/imgproc.hpp>

凸多角形を塗りつぶす。

cv::fillConvexPoly 関数は、塗りつぶした凸多角形を描画する。この関数は fillPoly 関数よりはるかに高速である。凸多角形だけでなく、自己交差のない任意の単調な多角形、すなわち輪郭が各水平線(スキャンライン)と高々2回しか交差しない多角形を塗りつぶせる(ただし、最上端や最下端の辺は水平であってもよい)。

引数
img画像。
points多角形の頂点。
color多角形の色。
lineType多角形の境界の種類。LineTypes を参照。
shift頂点座標における小数部のビット数。

◆ fillPoly() [1/2]

void cv::fillPoly ( InputOutputArray img,
const Point ** pts,
const int * npts,
int ncontours,
const Scalar & color,
int lineType = LINE_8,
int shift = 0,
Point offset = Point() )
Python:
cv.fillPoly(img, pts, color[, lineType[, shift[, offset]]]) -> img

#include <opencv2/imgproc.hpp>

これは利便性のために提供されているオーバーロードされたメンバ関数である。上記の関数とは、受け取る引数のみが異なる。

◆ fillPoly() [2/2]

void cv::fillPoly ( InputOutputArray img,
InputArrayOfArrays pts,
const Scalar & color,
int lineType = LINE_8,
int shift = 0,
Point offset = Point() )
Python:
cv.fillPoly(img, pts, color[, lineType[, shift[, offset]]]) -> img

#include <opencv2/imgproc.hpp>

1つ以上の多角形で囲まれた領域を塗りつぶす。

cv::fillPoly 関数は、複数の多角形の輪郭で囲まれた領域を塗りつぶす。この関数は、複雑な領域、たとえば穴のある領域や(一部が)自己交差する輪郭などを塗りつぶせる。

引数
img画像。
pts多角形の配列。各多角形は点の配列として表現される。
color多角形の色。
lineType多角形の境界の種類。LineTypes を参照。
shift頂点座標における小数部のビット数。
offset輪郭のすべての点に対する省略可能なオフセット。

◆ getFontScaleFromHeight()

double cv::getFontScaleFromHeight ( const int fontFace,
const int pixelHeight,
const int thickness = 1 )
Python:
cv.getFontScaleFromHeight(fontFace, pixelHeight[, thickness]) -> retval

#include <opencv2/imgproc.hpp>

ピクセル単位で指定した高さを実現するために使うべき、フォント固有のサイズを計算する。

引数
fontFace使用するフォント。cv::HersheyFonts を参照。
pixelHeightfontScale を計算するためのピクセル単位の高さ。
thicknessテキストの描画に使用される線の太さ。詳細は putText を参照。
戻り値
cv::putText に使用する fontSize
参照
cv::putText

◆ getTextSize() [1/2]

Size cv::getTextSize ( const String & text,
int fontFace,
double fontScale,
int thickness,
int * baseLine )
Python:
cv.getTextSize(text, fontFace, fontScale, thickness) -> retval, baseLine
cv.getTextSize(imgsize, text, org, fface, size[, weight[, flags[, wrap]]]) -> retval

#include <opencv2/imgproc.hpp>

テキスト文字列の幅と高さを計算する。

cv::getTextSize 関数は、指定したテキストを含むボックスのサイズを計算して返す。すなわち、以下のコードはあるテキストと、それを囲む密接なボックス、およびベースラインを描画する: :

String text = "Funny text inside the box";
double fontScale = 2;
int thickness = 3;
Mat img(600, 800, CV_8UC3, Scalar::all(0));
int baseline=0;
Size textSize = getTextSize(text, fontFace,
fontScale, thickness, &baseline);
baseline += thickness;
// center the text
Point textOrg((img.cols - textSize.width)/2,
(img.rows + textSize.height)/2);
// draw the box
rectangle(img, textOrg + Point(0, baseline),
textOrg + Point(textSize.width, -textSize.height),
Scalar(0,0,255));
// ... and the baseline first
line(img, textOrg + Point(0, thickness),
textOrg + Point(textSize.width, thickness),
Scalar(0, 0, 255));
// then put the text itself
putText(img, text, textOrg, fontFace, fontScale,
Scalar::all(255), thickness, 8);
static Scalar_< double > all(double v0)
Template class for specifying the size of an image or rectangle.
Definition types.hpp:338
_Tp height
the height
Definition types.hpp:366
_Tp width
the width
Definition types.hpp:365
Point2i Point
Definition types.hpp:209
std::string String
Definition cvstd.hpp:151
void rectangle(InputOutputArray img, Point pt1, Point pt2, const Scalar &color, int thickness=1, int lineType=LINE_8, int shift=0)
Draws a simple, thick, or filled up-right rectangle.
Size getTextSize(const String &text, int fontFace, double fontScale, int thickness, int *baseLine)
Calculates the width and height of a text string.
void putText(InputOutputArray img, const String &text, Point org, int fontFace, double fontScale, Scalar color, int thickness=1, int lineType=LINE_8, bool bottomLeftOrigin=false)
Draws a text string.
void line(InputOutputArray img, Point pt1, Point pt2, const Scalar &color, int thickness=1, int lineType=LINE_8, int shift=0)
Draws a line segment connecting two points.
@ FONT_HERSHEY_SCRIPT_SIMPLEX
hand-writing style font
Definition imgproc.hpp:892
引数
text入力テキスト文字列。
fontFace使用するフォント。HersheyFonts を参照。
fontScaleフォント固有の基準サイズに乗じられるフォントの拡大率。
thicknessテキストの描画に使用される線の太さ。詳細は putText を参照。
[out]baseLineテキストの最下点を基準としたベースラインのy座標。
戻り値
指定したテキストを含むボックスのサイズ。
参照
putText

◆ getTextSize() [2/2]

Rect cv::getTextSize ( Size imgsize,
const String & text,
Point org,
FontFace & fface,
int size,
int weight = 0,
PutTextFlags flags = PUT_TEXT_ALIGN_LEFT,
Range wrap = Range() )
Python:
cv.getTextSize(text, fontFace, fontScale, thickness) -> retval, baseLine
cv.getTextSize(imgsize, text, org, fface, size[, weight[, flags[, wrap]]]) -> retval

#include <opencv2/imgproc.hpp>

テキストのバウンディング矩形を計算する。

cv::getTextSize 関数は、指定したテキストを含むボックスのサイズを計算して返す。すなわち、以下のコードはあるテキストと、それを囲む密接なボックス、およびベースラインを描画する: :

引数
imgsize対象画像のサイズ。空でもよい。
text描画するテキスト文字列。
org描画されるテキストの先頭文字の左下隅(ただし PUT_TEXT_ALIGN_... を参照)
ffaceテキストに使用するフォント
sizeフォントサイズ。ピクセル単位(デフォルト)またはポイント単位。
weightフォントの太さ。100..1000 の範囲で、100 は "thin"(細字)、400 は "regular"(標準)、600 は "semibold"、800 は "bold"(太字)を表し、それ以上は "black" となる。デフォルトの太さは、可変太さフォントの場合は "400"、それ以外の場合は使用フォントが提供する "default" の太さを意味する。
flags各種フラグ。PUT_TEXT_... を参照。
wrap省略可能なテキスト折り返し範囲。putText を参照。

◆ line()

void cv::line ( InputOutputArray img,
Point pt1,
Point pt2,
const Scalar & color,
int thickness = 1,
int lineType = LINE_8,
int shift = 0 )
Python:
cv.line(img, pt1, pt2, color[, thickness[, lineType[, shift]]]) -> img

#include <opencv2/imgproc.hpp>

2点を結ぶ線分を描画する。

line 関数は、画像内の点 pt1 と pt2 の間に線分を描画する。線は画像の境界でクリッピングされる。整数座標のアンチエイリアスなしの線には、8連結または4連結のブレゼンハム(Bresenham)アルゴリズムが使用される。太い線は端を丸めて描画される。アンチエイリアス処理された線はガウシアンフィルタリングを用いて描画される。

引数
img画像。
pt1線分の1番目の点。
pt2線分の2番目の点。
color線の色。
thickness線の太さ。
lineType線の種類。LineTypes を参照。
shift点の座標における小数部のビット数。

◆ polylines() [1/2]

void cv::polylines ( InputOutputArray img,
const Point *const * pts,
const int * npts,
int ncontours,
bool isClosed,
const Scalar & color,
int thickness = 1,
int lineType = LINE_8,
int shift = 0 )
Python:
cv.polylines(img, pts, isClosed, color[, thickness[, lineType[, shift]]]) -> img

#include <opencv2/imgproc.hpp>

これは利便性のために提供されているオーバーロードされたメンバ関数である。上記の関数とは、受け取る引数のみが異なる。

◆ polylines() [2/2]

void cv::polylines ( InputOutputArray img,
InputArrayOfArrays pts,
bool isClosed,
const Scalar & color,
int thickness = 1,
int lineType = LINE_8,
int shift = 0 )
Python:
cv.polylines(img, pts, isClosed, color[, thickness[, lineType[, shift]]]) -> img

#include <opencv2/imgproc.hpp>

複数の多角形曲線を描画する。

引数
img画像。
pts多角形曲線の配列。
isClosed描画するポリラインを閉じるかどうかを示すフラグ。閉じる場合、関数は各曲線の最後の頂点から最初の頂点へ線を描画する。
colorポリラインの色。
thicknessポリラインの辺の太さ。
lineType線分の種類。LineTypes を参照。
shift頂点座標における小数部のビット数。

cv::polylines 関数は、1つ以上の多角形曲線を描画する。

◆ putText() [1/2]

void cv::putText ( InputOutputArray img,
const String & text,
Point org,
int fontFace,
double fontScale,
Scalar color,
int thickness = 1,
int lineType = LINE_8,
bool bottomLeftOrigin = false )
Python:
cv.putText(img, text, org, fontFace, fontScale, color[, thickness[, lineType[, bottomLeftOrigin]]]) -> img
cv.putText(img, text, org, color, fface, size[, weight[, flags[, wrap]]]) -> retval, img

#include <opencv2/imgproc.hpp>

テキスト文字列を描画する。

cv::putText 関数は、指定したテキスト文字列を画像内に描画する。指定したフォントで描画できない記号はクエスチョンマークに置き換えられる。テキスト描画のコード例については getTextSize を参照のこと。

fontScale 引数は、基準フォントサイズに乗算されるスケール係数である:

  • scale > 1 のとき、テキストは拡大される。
  • 0 < scale < 1 のとき、テキストは縮小される。
  • scale < 0 のとき、テキストは反転(鏡像化)される。
引数
img画像。
text描画するテキスト文字列。
org画像内でのテキスト文字列の左下隅。
fontFaceフォントの種類。HersheyFonts を参照。
fontScaleフォント固有の基準サイズに乗じられるフォントの拡大率。
colorテキストの色。
thicknessテキストの描画に使用される線の太さ。
lineType線の種類。LineTypes を参照。
bottomLeftOrigintrue の場合、画像データの原点は左下隅にある。そうでなければ左上隅にある。

◆ putText() [2/2]

Point cv::putText ( InputOutputArray img,
const String & text,
Point org,
Scalar color,
FontFace & fface,
int size,
int weight = 0,
PutTextFlags flags = PUT_TEXT_ALIGN_LEFT,
Range wrap = Range() )
Python:
cv.putText(img, text, org, fontFace, fontScale, color[, thickness[, lineType[, bottomLeftOrigin]]]) -> img
cv.putText(img, text, org, color, fface, size[, weight[, flags[, wrap]]]) -> retval, img

#include <opencv2/imgproc.hpp>

指定したフォントを使ってテキスト文字列を描画する。

関数 cv::putText は、指定したテキスト文字列を画像に描画する。指定フォントで描画できない記号は疑問符に置き換えられる。テキスト描画のコード例については getTextSize を参照。この関数は、テキストを続けて描画できる位置の座標をピクセル単位で返す。

引数
img画像。
text描画するテキスト文字列。
org描画されるテキストの先頭文字の左下隅(ただし PUT_TEXT_ALIGN_... を参照)
colorテキストの色。
ffaceテキストに使用するフォント
sizeフォントサイズ。ピクセル単位(デフォルト)またはポイント単位。
weightフォントの太さ。100..1000 の範囲で、100 は "thin"(細字)、400 は "regular"(標準)、600 は "semibold"、800 は "bold"(太字)を表し、それ以上は "black" となる。フォントが可変フォントでない場合、または 'wght' 軸に沿ったバリエーションを提供しない場合、この引数は無視される。太さが 0 の場合は、現在 setInstance() で設定されている太さが使用される。
flags各種フラグ。PUT_TEXT_... を参照。
wrap省略可能なテキスト折り返し範囲:左から右(LTR)のテキストの場合、描画される文字が wrap.end の境界を越えると、"カーソル" は wrap.start に設定される。右から左(RTL)のテキストの場合はその逆になる。この引数が設定されていない場合、LTR テキストには [org.x, img.cols] が、RTL テキストには [0, org.x] が使用される。

◆ rectangle() [1/2]

void cv::rectangle ( InputOutputArray img,
Point pt1,
Point pt2,
const Scalar & color,
int thickness = 1,
int lineType = LINE_8,
int shift = 0 )
Python:
cv.rectangle(img, pt1, pt2, color[, thickness[, lineType[, shift]]]) -> img
cv.rectangle(img, rec, color[, thickness[, lineType[, shift]]]) -> img

#include <opencv2/imgproc.hpp>

単純なまたは太い、もしくは塗りつぶした正立矩形を描画する。

cv::rectangle 関数は、矩形の外形線、または2つの対角の頂点が pt1 と pt2 である塗りつぶした矩形を描画する。

引数
img画像。
pt1矩形の頂点。
pt2pt1 と対角に位置する矩形の頂点。
color矩形の色、または明るさ(グレースケール画像の場合)。
thickness矩形を構成する線の太さ。FILLED のような負の値の場合は、関数が塗りつぶされた矩形を描画することを意味する。
lineType線の種類。LineTypes を参照。
shift点の座標における小数部のビット数。

◆ rectangle() [2/2]

void cv::rectangle ( InputOutputArray img,
Rect rec,
const Scalar & color,
int thickness = 1,
int lineType = LINE_8,
int shift = 0 )
Python:
cv.rectangle(img, pt1, pt2, color[, thickness[, lineType[, shift]]]) -> img
cv.rectangle(img, rec, color[, thickness[, lineType[, shift]]]) -> img

#include <opencv2/imgproc.hpp>

これは利便性のために提供されているオーバーロードされたメンバ関数である。上記の関数とは、受け取る引数のみが異なる。

描画する矩形の代替的な指定方法として rec 引数を使用する: r.tl() and r.br()-Point(1,1) が対角の頂点となる