CXCORE リファレンス マニュアル
- 基本構造体(Basic Structures)
- 配列操作(Operations on Arrays)
- 動的構造体(Dynamic Structures)
- 描画関数(Drawing Functions)
- 曲線と形状(Curves and Shapes)
- テキスト(Text)
- 点集合と輪郭(Point Sets and Contours)
- データ永続性と実行時型情報(Data Persistence and RTTI)
- その他の関数(Miscellaneous Functions)
- エラーハンドリングとシステム関数(Error Handling and System Functions)
描画関数(Drawing Functions)
描画関数は行列や画像,任意のカラーデプスで使われる. アンチエイリアス処理は8ビット画像にのみ実装されている. すべての関数はパラメータcolor(CV_RGBマクロか,cvScalar関数を用いて作成される)を持ち, これはカラー画像ではrgb値,グレースケール画像では輝度を意味する.
描く図の一部,もしくは全てが画像の領域外にある場合には,その部分は切り取られる. カラー画像の場合,チャンネルの順番は青,緑,赤...である. 順番を変更したい場合は,cvScalarを用いて順番を指定するか,cvCvtColor あるいは cvTransformを用いて,描画前,もしくは描画後に画像を変換すればよい.
曲線と形状(Curves and Shapes)
CV_RGB
カラー値を作成する
#define CV_RGB( r, g, b ) cvScalar( (b), (g), (r) )
Line
2点を結ぶ線分を描画する
void cvLine( CvArr* img, CvPoint pt1, CvPoint pt2, CvScalar color,
int thickness=1, int line_type=8, int shift=0 );
- img
- 画像.
- pt1
- 線分の1番目の端点.
- pt2
- 線分の2番目の端点.
- color
- 線分の色.
- thickness
- 線分の太さ.
- line_type
- 線分の種類.
8 (または0) - 8連結による線分.
4 - 4連結による線分.
CV_AA - アンチエイリアスされた線分. - shift
- 座標の小数点以下の桁を表すビット数.
関数cvLineは,点pt1と点pt2を結ぶ線分を画像上に描画する. 描画される線分は画像やROIにより切り取られる. 整数値座標でアンチエイリアスされていない線分では,8連結,または4連結のブレゼンハム(Bresenham)アルゴリズムが使われる. 太い線分の端は丸く描画される.アンチエイリアスされた線分は,ガウシアン(Gaussian)フィルタを用いて描かれる. 線分の色を指定するには,マクロCV_RGB(r, g, b)を用いる.
Rectangle
枠のみ,もしくは塗りつぶされた矩形を描画する
void cvRectangle( CvArr* img, CvPoint pt1, CvPoint pt2, CvScalar color,
int thickness=1, int line_type=8, int shift=0 );
- img
- 矩形が描画される画像.
- pt1
- 矩形の一つの頂点.
- pt2
- 矩形の反対側の頂点.
- color
- 線の色(RGB),もしくは輝度(グレースケール画像).
- thickness
- 矩形を描く線の太さ.負の値,例えばCV_FILLEDを指定した場合は塗りつぶされる.
- line_type
- 線の種類,詳細はcvLineを参照.
- shift
- 座標の小数点以下の桁を表すビット数.
関数cvRectangleは,点pt1と点pt2を対角とする矩形を描画する.
Circle
円を描画する
void cvCircle( CvArr* img, CvPoint center, int radius, CvScalar color,
int thickness=1, int line_type=8, int shift=0 );
- img
- 円が描画される画像.
- center
- 円の中心.
- radius
- 円の半径.
- color
- 円の色.
- thickness
- 線の幅.負の値を指定した場合は塗りつぶされる.
- line_type
- 線の種類,詳細はcvLineを参照.
- shift
- 中心座標と半径の小数点以下の桁を表すビット数.
関数cvCircleは,与えた中心と半径に応じて枠だけ,もしくは塗りつぶされた円を描く.描画される円はROIによって切り取られる. 円の色はマクロCV_RGB ( r, g, b )で指定できる.
Ellipse
枠だけの楕円,楕円弧,もしくは塗りつぶされた扇形の楕円を描画する
void cvEllipse( CvArr* img, CvPoint center, CvSize axes, double angle,
double start_angle, double end_angle, CvScalar color,
int thickness=1, int line_type=8, int shift=0 );
- img
- 楕円が描画される画像.
- center
- 楕円の中心.
- axes
- 楕円の軸の長さ.
- angle
- 回転角度.
- start_angle
- 楕円弧の開始角度.
- end_angle
- 楕円弧の終了角度.
- color
- 楕円の色.
- thickness
- 楕円弧の線の幅.
- line_type
- 楕円弧の線の種類.詳細はcvLineを参照.
- shift
- 中心座標と軸の長さの小数点以下の桁を表すビット数.
関数cvEllipseは,枠だけの楕円,楕円弧,もしくは塗りつぶした楕円を描画する. 描画される楕円はROIによって切り取られる. アンチエイリアスされた線や太い線を指定した場合には,線形近似が用いられる.角度は度で指定する. パラメータの意味を以下の図で説明する.
楕円弧を描画するためのパラメータ
EllipseBox
枠だけの楕円,もしくは塗りつぶされた楕円を描画する
void cvEllipseBox( CvArr* img, CvBox2D box, CvScalar color,
int thickness=1, int line_type=8, int shift=0 );
- img
- 楕円が描かれる画像.
- box
- 描画したい楕円を囲む矩形領域.
- thickness
- 楕円境界線の幅.
- line_type
- 楕円境界線の種類.詳細はcvLineを参照.
- shift
- 矩形領域の頂点座標の小数点以下の桁を表すビット数.
関数cvEllipseBoxは枠だけの楕円,もしくは塗りつぶされた楕円を描画する. この関数は,cvCamShiftやcvFitEllipseで得られた結果から楕円を描画する際に便利である. 描画される楕円はROIによって切り取られる.アンチエイリアスされた線や太い線を指定した場合には,線形近似が用いられる.
FillPoly
ポリゴン内部を塗りつぶす
void cvFillPoly( CvArr* img, CvPoint** pts, int* npts, int contours,
CvScalar color, int line_type=8, int shift=0 );
- img
- ポリゴンが描かれる画像.
- pts
- ポリゴンへのポインタ配列.
- npts
- ポリゴン頂点数の配列.
- contours
- 塗りつぶされた領域を区切る輪郭の数.
- color
- ポリゴンの色.
- line_type
- 線の種類.詳細はcvLineを参照.
- shift
- 頂点座標の小数点以下の桁を表すビット数.
関数cvFillPolyは,幾つかのポリゴンにより区切られた領域を塗りつぶす. この関数では複雑な領域,例えば領域内に穴を持つものや,自己交差したものなども塗りつぶす.
FillConvexPoly
凸ポリゴンを塗りつぶす
void cvFillConvexPoly( CvArr* img, CvPoint* pts, int npts,
CvScalar color, int line_type=8, int shift=0 );
- img
- ポリゴンが描かれる画像.
- pts
- 一つのポリゴンへのポインタの配列.
- npts
- ポリゴンの頂点数.
- color
- ポリゴンの色.
- line_type
- 線の種類.詳細はcvLineを参照.
- shift
- 頂点座標の小数点以下の桁を表すビット数.
関数cvFillConvexPolyは凸ポリゴンの内部を塗りつぶす. この関数は,関数cvFillPolyより高速に動作する. また,凸ポリゴンだけでなく,その輪郭が水平なスキャンラインと2回以下しか交差しないような単純なポリゴンはすべて塗りつぶすことができる.
PolyLine
ポリライン(枠だけのポリゴン)を描画する
void cvPolyLine( CvArr* img, CvPoint** pts, int* npts, int contours, int is_closed,
CvScalar color, int thickness=1, int line_type=8, int shift=0 );
- img
- ポリラインが描かれる画像.
- pts
- ポリラインへのポインタの配列.
- npts
- ポリラインの頂点数の配列.
- contours
- ポリラインの個数.
- is_closed
- ポリラインを閉じるかどうかを指定する.閉じる場合,それぞれの領域の最後の頂点と最初の頂点を結ぶ線分を描画する.
- color
- 線の色.
- thickness
- 線の太さ.
- line_type
- 線の種類.詳細はcvLineを参照.
- shift
- 頂点座標の小数点以下の桁を表すビット数.
関数cvPolyLineは,一つ,もしくは複数のポリラインを描画する.