画像処理
[APIドキュメント] [toc]
グローバル変数
ColorConversionCodes
| 0 | COLOR_BGR2BGRA | |
| 0 | COLOR_RGB2RGBA | |
| 1 | COLOR_BGRA2BGR | |
| 1 | COLOR_RGBA2RGB | |
| 4 | COLOR_BGR2RGB | |
| 4 | COLOR_RGB2BGR | |
| 5 | COLOR_BGRA2RGBA | |
| 5 | COLOR_RGBA2BGRA | |
| 6 | COLOR_BGR2GRAY | |
| 7 | COLOR_RGB2GRAY | |
| 8 | COLOR_GRAY2BGR | |
| 8 | COLOR_GRAY2RGB | |
| 9 | COLOR_GRAY2BGRA | |
| 9 | COLOR_GRAY2RGBA | |
| 10 | COLOR_BGRA2GRAY | |
| 11 | COLOR_RGBA2GRAY | |
| 40 | COLOR_BGR2HSV | |
| 41 | COLOR_RGB2HSV | |
| 54 | COLOR_HSV2BGR | |
| 55 | COLOR_HSV2RGB | |
| 66 | COLOR_BGR2HSV_FULL | |
| 67 | COLOR_RGB2HSV_FULL | |
| 70 | COLOR_HSV2BGR_FULL | |
| 71 | COLOR_HSV2RGB_FULL | 
ContourApproximationModes
| 1 | CHAIN_APPROX_NONE | 輪郭上の全点の情報を保持する | 
| 2 | CHAIN_APPROX_SIMPLE | 輪郭を圧縮して冗長な点の情報を削除し,メモリの使用を抑える | 
| 3 | CHAIN_APPROX_TC89_L1 | |
| 4 | CHAIN_APPROX_TC89_KCOS | 
HersheyFonts
| 0 | FONT_HERSHEY_SIMPLEX | サンセリフ体(普通サイズ) | 
| 1 | FONT_HERSHEY_PLAIN | サンセリフ体(小さいサイズ) | 
| 2 | FONT_HERSHEY_DUPLEX | サンセリフ体(普通サイズ、SIMPLEXより複雑) | 
| 3 | FONT_HERSHEY_COMPLEX | セリフ体(普通サイズ) | 
| 4 | FONT_HERSHEY_TRIPLEX | セリフ体(普通サイズ、COMPLEXより複雑) | 
| 5 | FONT_HERSHEY_COMPLEX_SMALL | セリフ体(小さいサイズ) | 
| 6 | FONT_HERSHEY_SCRIPT_SIMPLEX | 手書き風フォント | 
| 7 | FONT_HERSHEY_SCRIPT_COMPLEX | 手書き風フォント(SIMPLEXより複雑) | 
| 16 | FONT_ITALIC | イタリック体(他のフォントと組み合わせて使う) | 
LineTypes
| -1 | FILLED | |
| 4 | LINE_4 | 4連結 | 
| 8 | LINE_8 | 8連結 | 
| 16 | LINE_AA | アンチエイリアス | 
MarkerTypes
| 0 | MARKER_CROSS | 「+」マーカー | 
| 1 | MARKER_TILTED_CROSS | 「×」マーカー | 
| 2 | MARKER_STAR | 「*」マーカー | 
| 3 | MARKER_DIAMOND | 「◇」マーカー | 
| 4 | MARKER_SQUARE | 「□」マーカー | 
| 5 | MARKER_TRIANGLE_UP | 「△」マーカー | 
| 6 | MARKER_TRIANGLE_DOWN | 「▽」マーカー | 
MorphTypes
| 0 | MORPH_ERODE | |
| 1 | MORPH_DILATE | |
| 2 | MORPH_OPEN | |
| 3 | MORPH_CLOSE | |
| 4 | MORPH_GRADIENT | |
| 5 | MORPH_TOPHAT | |
| 6 | MORPH_BLACKHAT | |
| 7 | MORPH_HITMISS | 
RetrievalModes
| 0 | RETR_EXTERNAL | 一番外側の輪郭のみ抽出する | 
| 1 | RETR_LIST | すべての輪郭を抽出するが、階層構造は作成しない | 
| 2 | RETR_CCOMP | すべての輪郭を抽出し、2階層の階層構造を作成する | 
| 3 | RETR_TREE | すべての輪郭を抽出し、ツリーで階層構造を作成する | 
| 4 | RETR_FLOODFILL | 
関数
arrowedLine
arrowedLine(img, pt1, pt2, color, thickness = 1, line_type = cv2.LINE_8, shift = 0, tipLength = 0.1)
- 引数
- 戻り値- img : 矢印が描画された画像 <ndarray>- 引数として指定したimgと同一のインスタンスを参照しています
 
 
- img : 矢印が描画された画像 <ndarray>
矢印を描画します。
blur
blur(src, ksize[, dst[, anchor[, borderType]]]) -> dst
- 引数- src:入力画像 <ndarray>
- ksize:カーネルサイズ <Size>
 
- 戻り値- dst:出力画像 <ndarray>
 
正規化されたボックスフィルターを用いて画像を平滑化します。
circle
circle(img, center, radius, color, thickness=1, lineType=cv2.LINE_8, shift=0)
- 引数
- 戻り値- img:円が描画された画像 <ndarray>- 引数として指定したimgと同一のインスタンスを参照しています
 
 
- img:円が描画された画像 <ndarray>
connectedComponentsWithStats
connectedComponentsWithStats(image[, labels[, stats[, centroids[, connectivity[, ltype]]]]]) -> retval, labels, stats, centroids
- 引数
- 戻り値- retval:検出したブロブの個数 <int>
- labels:入力画像の各画素に対して、ブロブのラベルのIDを割り振った配列 <ndarray>
- stats:検出したブロブの統計情報 <ndarray>
- centroids:検出したブロブの重心の座標 <ndarray>
 
与えられた画像の一塊の領域(ブロブ)を検出します。画像は二値化画像で与えられ、背景が黒、検出するブロブが白である必要があります。
convexHull
convexHull(points[, hull[, clockwise[, returnPoints]]]) -> hull
- 引数- points:凸包を求める輪郭 <Contour>
- returnPoints:戻り値で返すhullを以下のように指定する- True → 与えられた輪郭のうち、凸包上の点の座標 (shape = (sample, 1, 2) )
- False → 与えられた輪郭のうち、凸包上の点に対応する点のインデックス (shape = (sample, 1) )
 
 
- 戻り値- hull:returnPointsで指定されたものが返される <ndarray>
 
与えられた輪郭の凸包を見つけます。
- 凸包:与えられた点をすべて包含する最小の凸多角形(凸多面体)のこと
convexityDefects
convexityDefects(contour, convexhull[, convexityDefects]) -> convexityDefects
- 引数- contour:輪郭 <Contour>
- convexhull:与えられた輪郭のうち、凸包上の点を表すインデックス <ndarray>
 
- 戻り値- convexityDefects:すべての凸性の欠陥に対して、 始点, 終点, 最も遠い点, 最も遠い点までの近似距離を返す <ndarray>
 
輪郭の凸性の欠陥を見つけます。
cvtColor
cvtColor(src, code[, dst[, dstCn]]) -> dst
- 引数- src:入力画像 <ndarray>
- code:色変換に用いるコード <ColorConversionCodes>
 
- 戻り値- dst:出力画像 <ndarray>
 
ある色空間から別の色空間に画像を変換します。
dilate
dilate(src, kernel[, dst[, anchor[, iterations[, borderType[, borderValue]]]]]) -> dst
- 引数- src:入力画像 <ndarray>
- kernel:カーネル <ndarray>
 
- 戻り値- dst:出力画像 <ndarray>
 
膨張処理を行います(白色の領域を膨張させます)。
drawContours
drawContours(image, contours, contourIdx, color[, thickness[, lineType[, hierarchy[, maxLevel[, offset]]]]]) -> image
- 引数- image:輪郭を描画する画像 <ndarray>- 引数として指定したimageにも輪郭が上書きされます
 
- contours:輪郭のリスト <list(Contour)>
- contourIdx:contoursの中のどの輪郭を描画するのかを指定 <int>- 負で与えられた場合はすべての輪郭を描画する
 
- color:描画する線の色 <Scalar>
- thickness:描画する線の太さ <int>- 負で与えられた場合は塗りつぶしになる
 
 
- image:輪郭を描画する画像 <ndarray>
- 戻り値- image:輪郭を描画した画像 <ndarray>- 引数として指定したimageと同一のインスタンスを参照しています
 
 
- image:輪郭を描画した画像 <ndarray>
drawMarker
drawMarker(img, position, color, markerType = cv2.MARKER_CROSS, markerSize = 20, thickness = 1, line_type = cv2.LINE_8)
- 引数- img : マーカーを描画する画像 <ndarray>- 引数として指定したimgにもマーカーが上書きされます
 
- position : マーカーの座標 <Point>
- color : マーカーの色 <Scalar>
- markerType : マーカーのタイプ(MarkerTypes列挙型で指定します) <int>
- markerSize : マーカーのサイズ <int>
- thickness : マーカーを描く線の太さ <int>
- line_type : マーカーを描く線の種類(LineTypes列挙型で指定します) <int>
 
- img : マーカーを描画する画像 <ndarray>
- 戻り値- img : マーカーを描画した画像 <ndarray>- 引数として指定したimgと同一のインスタンスを参照しています
 
 
- img : マーカーを描画した画像 <ndarray>
指定されたマーカーを描画します。
ellipse
ellipse(img, box, color, thickness=1, lineType=cv2.LINE_8)
- 引数:- img:楕円を描画する画像 <ndarray>- 引数として指定したimgにも楕円が上書きされます
 
- box:楕円が内接する長方形 <RotatedRect>
- color:楕円の色 <Scalar>
- thickness: 楕円を描く線の太さ <int>- 負の値で指定すると、塗りつぶしになる
 
- lineType:楕円を描く線の種類 <int>
 
- img:楕円を描画する画像 <ndarray>
- 戻り値- img:楕円が描画された画像 <ndarray>- 引数として指定したimgと同一のインスタンスを参照しています
 
 
- img:楕円が描画された画像 <ndarray>
erode
erode(src, kernel[, dst[, anchor[, iterations[, borderType[, borderValue]]]]]) -> dst
- 引数- src:入力画像 <ndarray>
- kernel:カーネル <ndarray>
 
- 戻り値- dst:出力画像 <ndarray>
 
収縮処理を行います(白色の領域を収縮させます)。
fillConvexPoly
fillConvexPoly(img, points, color, lineType = cv2.LINE_8, shift = 0)
- 引数- img : 内部を塗りつぶした多角形を描画する画像 <ndarray>- 引数として指定したimgにも折れ線(多角形)が上書きされてしまうので注意!
 
- points : 多角形の頂点の一覧を表すshapeが(頂点数, 2)のndarray <ndarray>
- color : 多角形の色 <Scala>
- lineType : 多角形を描く線の種類(LineTypes列挙型で指定します) <int>
- shift : 座標の小数点以下の桁を表すビット数 <int>
 
- img : 内部を塗りつぶした多角形を描画する画像 <ndarray>
- 戻り値- img : 多角形が描画された画像 <ndarray>
 
内部が塗りつぶされた多角形を1つ描画します。fillPolyよりも高速に描画することができます。
fillPoly
fillPoly(img, pts, color, lineType = cv2.LINE_8, shift = 0)
- 引数- img : 内部を塗りつぶした多角形を描画する画像 <ndarray>- 引数として指定したimgにも折れ線(多角形)が上書きされてしまうので注意!
 
- pts : 多角形の頂点の一覧を表すshapeが(頂点数, 2)のndarrayのリスト <list(ndarray)>- 描画する図形が1つのみの場合はリストの中に頂点の組み合わせを表すndarrayが一つだけ含まれます。
- 描画する図形が複数ある場合は、描画する図形の数だけ頂点の組み合わせを表すndarrayを含むリストとなります。
 
 - color : 多角形の色 <Scala>
- lineType : 多角形を描く線の種類(LineTypes列挙型で指定します) <int>
- shift : 座標の小数点以下の桁を表すビット数 <int>
 
- img : 内部を塗りつぶした多角形を描画する画像 <ndarray>
- 戻り値- img : 多角形が描画された画像 <ndarray>
 
内部が塗りつぶされた多角形を描画します。複数の多角形を同時に描画することが可能ですが、fillConvexPoly関数よりも描画速度に劣ります。
findContours
findContours(image, mode, method[, contours[, hierarchy[, offset]]]) -> contours, hierarchy
- 引数- image:入力画像(1ch画像である必要あり) <ndarray>
- mode:輪郭の抽出モード <int>- RetrievalModesで指定します
 
- method:輪郭の近似手法 <int>
 
- 戻り値- contours:検出された輪郭のリスト <list(Contour)>
- hierarchy:輪郭の階層情報(親子関係) <ndarray>
 
getRotationMatrix2D
getRotationMatrix2D(center, angle, scale) -> retval
getStructuringElement
getStructuringElement(shape, ksize[, anchor]) -> retval
- 引数- shape:カーネルの形状 <int>
- ksize:カーネルのサイズ <Size>
 
- 戻り値- retval:作成されたカーネル <ndarray>
 
モルフォロジー変換で用いるカーネルを取得します。
カーネルサイズは3×3が最小で奇数で定めます。(サイズが偶数だと画像全体が移動する場合があるので注意してください)
Laplacian
Laplacian(src, ddepth[, dst[, ksize[, scale[, delta[, borderType]]]]]) -> dst
- 引数- src:入力画像 <ndarray>
- ddepth:出力画像のdtype <int>
 
- 戻り値- dst:出力画像 <ndarray>
 
画像のラプラシアンを計算することでエッジ検出を行います。
line
line(img, pt1, pt2, color, thickness = 1, lineType = cv2.LINE_8, shift = 0)
- 引数
- 戻り値- img : 線分が描画された画像 <ndarray>
 
指定された2点を結ぶ線分を描画します。
morphologyEx
morphologyEx(src, op, kernel[, dst[, anchor[, iterations[, borderType[, borderValue]]]]]) -> dst
- 引数- src:入力画像 <ndarray>
- op:モルフォロジー変換の種類を指定します <MorphTypes>
- kernel:カーネル <ndarray>
 
- 戻り値- dst:出力画像 <ndarray>
 
pointPolygonTest
pointPolygonTest(contour, pt, measureDist) -> retval
- 引数
- 戻り値- retval:点が輪郭に含まれるかどうかとその距離 <float>
 
点が輪郭に含まれるかどうかと、点から輪郭までの最短距離を計算します。指定された点が輪郭の外側にあれば負の値,内側にあれば正の値,輪郭上にあれば0となります。measureDistをFalseに指定すると、+1, -1, 0のいずれかの値となり、高速に処理できます。
polylines
polylines(img, pts, isClosed, color, thickness = 1, lineType = cv2.LINE_8, shift = 0)
- 引数- img : 折れ線(多角形)を描画する画像 <ndarray>- 引数として指定したimgにも折れ線(多角形)が上書きされてしまうので注意!
 
- pts : 折れ線(多角形)の頂点の一覧を表すshapeが(頂点数, 2)のndarrayのリスト <list(ndarray)>- 描画する図形が1つのみの場合はリストの中に頂点の組み合わせを表すndarrayが一つだけ含まれます。
- 描画する図形が複数ある場合は、描画する図形の数だけ頂点の組み合わせを表すndarrayを含むリストとなります。
 
- isClosed : 折れ線が閉じているかどうかを指定する <bool>- True -> 閉じた折れ線(=多角形)が描画される
- False -> 多角形ではなく折れ線が描画される
 
- color : 折れ線(多角形)の色 <Scalar>
- thickness : 折れ線(多角形)を描く線の太さ <int>
- lineType : 折れ線(多角形)を描く線の種類(LineTypes列挙型で指定します) <int>
- shift : 座標の小数点以下の桁を表すビット数 <int>
 
- img : 折れ線(多角形)を描画する画像 <ndarray>
- 戻り値- img : 折れ線(多角形)が描画された画像 <ndarray>
 
折れ線、もしくは多角形を描画します。pts引数にリストとして頂点の一覧を渡すことで、複数の図形をまとめて描画することが可能です。
なお、thicknessを負の値にしても内部を塗りつぶすことはできません。内部を塗りつぶした多角形を描画する場合は、fillConvexPoly関数やfillPoly関数を用います。
putText
putText(img, text, org, fontFace, fontScale, color, thickness = 1, lineType = cv2.LINE_8, bottomLeftOrigin = False)
- 引数- img : 文字列を描画する画像 <ndarray>- 引数として指定したimgにも文字列が上書きされてしまうので注意!
 
- text : 描画する文字列 <str>
- org : 文字列の左下隅の座標 <Point>
- fontFace : フォントの種類(HersheyFonts列挙型で指定します) <int>
- fontScale : フォントのスケールファクタ <float>
- color : フォントの色 <Scalar>
- thickness : フォントの太さ <int>
- lineType : フォントの線の種類(LineTypes列挙型で指定します) <int>
- bottomLeftOrigin : 画像データの原点の位置を指定します <bool>- True -> 画像データの左下が原点
- False -> 画像データの左上が原点
 
 
- img : 文字列を描画する画像 <ndarray>
- 戻り値- img : 文字列が描画された画像 <ndarray>
 
指定された文字列を画像に描画します。
rectangle
rectangle(img, pt1, pt2, color, thickness=1, lineType=cv2.LINE_8, shift=0)
- 引数
- 戻り値:矩形が描画された画像 <ndarray>
rectangle(img, rec, color, thickness=1, lineType=cv2.LINE_8, shift=0)
- 引数
- 戻り値:矩形が描画された画像 <ndarray>
resize
resize(src, dsize[, dst[, fx[, fy[, interpolation]]]]) -> dst
- 引数- src:入力画像 <ndarray>
- dsize:出力画像のサイズ <Size>
 
- 戻り値- dst:出力画像 <ndarray>
 
入力画像のサイズを指定された解像度にリサイズします。
Sobel
Sobel(src, ddepth, dx, dy[, dst[, ksize[, scale[, delta[, borderType]]]]]) -> dst
- 引数- src:入力画像 <ndarray>
- ddepth:出力画像のdtype <int>
- dx:x方向の微分次数 <int>
- dy:y方向の微分次数 <int>
 
- 戻り値- dst:出力画像 <ndarray>
 
拡張Sobel演算子を用いて一次、二次、三次または混合次数の微分画像を計算します。
threshold
threshold(src, thresh, maxval, type[, dst]) -> retval, dst
- 引数- src:入力画像 <ndarray>
- thresh:閾値の値 <float>
- maxval:どの値に二値化するかを定める(0 と maxval に二値化される) <float>
- type:二値化の方法 <int>
- dst
 
- 戻り値- retval:大津法・トライアングル法を用いた時の閾値 <float>
- dst:出力画像 <ndarray>
 
warpAffine
warpAffine(src, M, dsize[, dst[, flags[, borderMode[, borderValue]]]]) -> dst
watershed
watershed(image, markers) -> markers