画像処理

画像処理

[APIドキュメント]

グローバル変数

ColorConversionCodes

@ [APIドキュメント]

0COLOR_BGR2BGRA
0COLOR_RGB2RGBA
1COLOR_BGRA2BGR
1COLOR_RGBA2RGB
4COLOR_BGR2RGB
4COLOR_RGB2BGR
5COLOR_BGRA2RGBA
5COLOR_RGBA2BGRA
6COLOR_BGR2GRAY
7COLOR_RGB2GRAY
8COLOR_GRAY2BGR
8COLOR_GRAY2RGB
9COLOR_GRAY2BGRA
9COLOR_GRAY2RGBA
10COLOR_BGRA2GRAY
11COLOR_RGBA2GRAY
40COLOR_BGR2HSV
41COLOR_RGB2HSV
54COLOR_HSV2BGR
55COLOR_HSV2RGB
66COLOR_BGR2HSV_FULL
67COLOR_RGB2HSV_FULL
70COLOR_HSV2BGR_FULL
71COLOR_HSV2RGB_FULL
※ よく使うものの抜粋です(そのほかはAPIドキュメントをご覧ください)

ContourApproximationModes

@ [APIドキュメント]

1CHAIN_APPROX_NONE輪郭上の全点の情報を保持する
2CHAIN_APPROX_SIMPLE輪郭を圧縮して冗長な点の情報を削除し,メモリの使用を抑える
3CHAIN_APPROX_TC89_L1
4CHAIN_APPROX_TC89_KCOS

HersheyFonts

@ [APIドキュメント]

0FONT_HERSHEY_SIMPLEXサンセリフ体(普通サイズ)
1FONT_HERSHEY_PLAINサンセリフ体(小さいサイズ)
2FONT_HERSHEY_DUPLEXサンセリフ体(普通サイズ、SIMPLEXより複雑)
3FONT_HERSHEY_COMPLEXセリフ体(普通サイズ)
4FONT_HERSHEY_TRIPLEXセリフ体(普通サイズ、COMPLEXより複雑)
5FONT_HERSHEY_COMPLEX_SMALLセリフ体(小さいサイズ)
6FONT_HERSHEY_SCRIPT_SIMPLEX手書き風フォント
7FONT_HERSHEY_SCRIPT_COMPLEX手書き風フォント(SIMPLEXより複雑)
16FONT_ITALICイタリック体(他のフォントと組み合わせて使う)

LineTypes

@ [APIドキュメント]

-1FILLED
4LINE_44連結
8LINE_88連結
16LINE_AAアンチエイリアス

MarkerTypes

@ [APIドキュメント]

0MARKER_CROSS「+」マーカー
1MARKER_TILTED_CROSS「×」マーカー
2MARKER_STAR「*」マーカー
3MARKER_DIAMOND「◇」マーカー
4MARKER_SQUARE「□」マーカー
5MARKER_TRIANGLE_UP「△」マーカー
6MARKER_TRIANGLE_DOWN「▽」マーカー

MorphTypes

@ [APIドキュメント]

0MORPH_ERODE
1MORPH_DILATE
2MORPH_OPEN
3MORPH_CLOSE
4MORPH_GRADIENT
5MORPH_TOPHAT
6MORPH_BLACKHAT
7MORPH_HITMISS

RetrievalModes

@ [APIドキュメント]

0RETR_EXTERNAL一番外側の輪郭のみ抽出する
1RETR_LISTすべての輪郭を抽出するが、階層構造は作成しない
2RETR_CCOMPすべての輪郭を抽出し、2階層の階層構造を作成する
3RETR_TREEすべての輪郭を抽出し、ツリーで階層構造を作成する
4RETR_FLOODFILL

関数

arrowedLine

@ [APIドキュメント]

arrowedLine(img, pt1, pt2, color, thickness = 1, line_type = cv2.LINE_8, shift = 0, tipLength = 0.1)

  • 引数
    • img : 矢印を描画する画像 <ndarray>
      • 引数として指定したimgにも矢印が上書きされます
    • pt1 : 始点の座標 <Point>
    • pt2 : 終点の座標(矢印の’矢’がつく座標) <Point>
    • color : 矢印の色 <Scalar>
    • thickness : 矢印を描く線の太さ <int>
    • line_type : 矢印を描く線の種類(LineTypes列挙型で指定します) <int>
    • shift : 座標の小数点以下の桁を表すビット数 <int>
    • tipLength : 矢印の矢の部分の長さの割合 <float>
  • 戻り値
    • img : 矢印が描画された画像 <ndarray>
      • 引数として指定したimgと同一のインスタンスを参照しています

矢印を描画します。

blur

@ [APIドキュメント]

blur(src, ksize[, dst[, anchor[, borderType]]]) -> dst

  • 引数
    • src:入力画像 <ndarray>
    • ksize:カーネルサイズ <Size>
  • 戻り値
    • dst:出力画像 <ndarray>

正規化されたボックスフィルターを用いて画像を平滑化します。

circle

@ [APIドキュメント]

circle(img, center, radius, color, thickness=1, lineType=cv2.LINE_8, shift=0)

  • 引数
    • img:円を描画する画像 <ndarray>
      • 引数として指定したimgにも円が上書きされます
    • center:円の中心の座標 <Point>
    • radius:円の半径 <int>
    • color:円の色 <Scalar>
    • thickness:円を描く線の太さ <int>
      • 負の値で指定すると、塗りつぶしになる
    • lineType:円を描く線の種類 <int>
    • shift:座標の小数点以下の桁を表すビット数 <int>
  • 戻り値
    • img:円が描画された画像 <ndarray>
      • 引数として指定したimgと同一のインスタンスを参照しています

connectedComponentsWithStats

@ [APIドキュメント]

connectedComponentsWithStats(image[, labels[, stats[, centroids[, connectivity[, ltype]]]]]) -> retval, labels, stats, centroids

  • 引数
  • 戻り値
    • retval:検出したブロブの個数 <int>
    • labels:入力画像の各画素に対して、ブロブのラベルのIDを割り振った配列 <ndarray>
    • stats:検出したブロブの統計情報 <ndarray>
    • centroids:検出したブロブの重心の座標 <ndarray>

与えられた画像の一塊の領域(ブロブ)を検出します。画像は二値化画像で与えられ、背景が黒、検出するブロブが白である必要があります。

convexHull

@ [APIドキュメント]

convexHull(points[, hull[, clockwise[, returnPoints]]]) -> hull

  • 引数
    • points:凸包を求める輪郭 <Contour>
    • returnPoints:戻り値で返すhullを以下のように指定する
      • True → 与えられた輪郭のうち、凸包上の点の座標 (shape = (sample, 1, 2) )
      • False → 与えられた輪郭のうち、凸包上の点に対応する点のインデックス (shape = (sample, 1) )
  • 戻り値
    • hull:returnPointsで指定されたものが返される <ndarray>

与えられた輪郭の凸包を見つけます。

  • 凸包:与えられた点をすべて包含する最小の凸多角形(凸多面体)のこと

convexityDefects

@ [APIドキュメント]

convexityDefects(contour, convexhull[, convexityDefects]) -> convexityDefects

  • 引数
    • contour:輪郭 <Contour>
    • convexhull:与えられた輪郭のうち、凸包上の点を表すインデックス <ndarray>
  • 戻り値
    • convexityDefects:すべての凸性の欠陥に対して、 始点, 終点, 最も遠い点, 最も遠い点までの近似距離を返す <ndarray>

輪郭の凸性の欠陥を見つけます。

cvtColor

@ [APIドキュメント]

cvtColor(src, code[, dst[, dstCn]]) -> dst

  • 引数
  • 戻り値
    • dst:出力画像 <ndarray>

ある色空間から別の色空間に画像を変換します。

dilate

@ [APIドキュメント]

dilate(src, kernel[, dst[, anchor[, iterations[, borderType[, borderValue]]]]]) -> dst

  • 引数
    • src:入力画像 <ndarray>
    • kernel:カーネル <ndarray>
  • 戻り値
    • dst:出力画像 <ndarray>

膨張処理を行います(白色の領域を膨張させます)。

drawContours

@ [APIドキュメント]

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と同一のインスタンスを参照しています

drawMarker

@ [APIドキュメント]

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と同一のインスタンスを参照しています

指定されたマーカーを描画します。

ellipse

@ [APIドキュメント]

ellipse(img, box, color, thickness=1, lineType=cv2.LINE_8)

  • 引数:
    • img:楕円を描画する画像 <ndarray>
      • 引数として指定したimgにも楕円が上書きされます
    • box:楕円が内接する長方形 <RotatedRect>
    • color:楕円の色 <Scalar>
    • thickness: 楕円を描く線の太さ <int>
      • 負の値で指定すると、塗りつぶしになる
    • lineType:楕円を描く線の種類 <int>
  • 戻り値
    • img:楕円が描画された画像 <ndarray>
      • 引数として指定したimgと同一のインスタンスを参照しています

erode

@ [APIドキュメント]

erode(src, kernel[, dst[, anchor[, iterations[, borderType[, borderValue]]]]]) -> dst

  • 引数
    • src:入力画像 <ndarray>
    • kernel:カーネル <ndarray>
  • 戻り値
    • dst:出力画像 <ndarray>

収縮処理を行います(白色の領域を収縮させます)。

fillConvexPoly

@ [APIドキュメント]

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>


内部が塗りつぶされた多角形を1つ描画します。fillPolyよりも高速に描画することができます。

fillPoly

@ [APIドキュメント]

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>

内部が塗りつぶされた多角形を描画します。複数の多角形を同時に描画することが可能ですが、fillConvexPoly関数よりも描画速度に劣ります。

findContours

@ [APIドキュメント]

findContours(image, mode, method[, contours[, hierarchy[, offset]]]) -> contours, hierarchy

  • 引数
    • image:入力画像(1ch画像である必要あり) <ndarray>
    • mode:輪郭の抽出モード <int>
    • method:輪郭の近似手法 <int>
  • 戻り値
    • contours:検出された輪郭のリスト <list(Contour)>
    • hierarchy:輪郭の階層情報(親子関係) <ndarray>

getRotationMatrix2D

@ [APIドキュメント]

getRotationMatrix2D(center, angle, scale) -> retval

getStructuringElement

@ [APIドキュメント]

getStructuringElement(shape, ksize[, anchor]) -> retval

  • 引数
    • shape:カーネルの形状 <int>
    • ksize:カーネルのサイズ <Size>
  • 戻り値
    • retval:作成されたカーネル <ndarray>

モルフォロジー変換で用いるカーネルを取得します。
カーネルサイズは3×3が最小で奇数で定めます。(サイズが偶数だと画像全体が移動する場合があるので注意してください)

Laplacian

@ [APIドキュメント]

Laplacian(src, ddepth[, dst[, ksize[, scale[, delta[, borderType]]]]]) -> dst

  • 引数
    • src:入力画像 <ndarray>
    • ddepth:出力画像のdtype <int>
  • 戻り値
    • dst:出力画像 <ndarray>

画像のラプラシアンを計算することでエッジ検出を行います。

line

@ [APIドキュメント]

line(img, pt1, pt2, color, thickness = 1, lineType = cv2.LINE_8, shift = 0)

  • 引数
    • img : 線分を描画する画像 <ndarray>
      • 引数として指定したimgにも線が上書きされてしまうので注意!
    • pt1 : 描画する線分の一方の端点の座標 <Point>
    • pt2 : 描画する線分のpt1と反対側の端点の座標 <Point>
    • color : 線分の色 <Scalar>
    • thickness : 線分を描く線の太さ <int>
    • lineType : 線分を描く線の種類(LineTypes列挙型で指定します) <int>
    • shift : 座標の小数点以下の桁を表すビット数 <int>
  • 戻り値
    • img : 線分が描画された画像 <ndarray>

指定された2点を結ぶ線分を描画します。

morphologyEx

@ [APIドキュメント]

morphologyEx(src, op, kernel[, dst[, anchor[, iterations[, borderType[, borderValue]]]]]) -> dst

  • 引数
    • src:入力画像 <ndarray>
    • op:モルフォロジー変換の種類を指定します <MorphTypes>
    • kernel:カーネル <ndarray>
  • 戻り値
    • dst:出力画像 <ndarray>

pointPolygonTest

@ [APIドキュメント]

pointPolygonTest(contour, pt, measureDist) -> retval

  • 引数
    • contour:輪郭 <Contour>
    • pt:輪郭に含まれるかをテストするポイント <Point>
    • measureDist:点と輪郭との最短距離を計算するかどうかの指定 <bool>
  • 戻り値
    • retval:点が輪郭に含まれるかどうかとその距離 <float>

点が輪郭に含まれるかどうかと、点から輪郭までの最短距離を計算します。指定された点が輪郭の外側にあれば負の値,内側にあれば正の値,輪郭上にあれば0となります。measureDistをFalseに指定すると、+1, -1, 0のいずれかの値となり、高速に処理できます。

polylines

@ [APIドキュメント]

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>

折れ線、もしくは多角形を描画します。pts引数にリストとして頂点の一覧を渡すことで、複数の図形をまとめて描画することが可能です。
なお、thicknessを負の値にしても内部を塗りつぶすことはできません。内部を塗りつぶした多角形を描画する場合は、fillConvexPoly関数やfillPoly関数を用います。

putText

@ [APIドキュメント]

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>

指定された文字列を画像に描画します。

rectangle

@ [APIドキュメント]

rectangle(img, pt1, pt2, color, thickness=1, lineType=cv2.LINE_8, shift=0)

  • 引数
    • img:矩形を描画する画像 <ndarray>
      • 引数として指定したimgにも矩形が上書きされてしまうので注意が必要!
    • pt1:描画する矩形の頂点の座標 <Point>
    • pt2:描画する矩形のpt1と対角線側の頂点の座標 <Point>
    • color:矩形の色 <Scalar>
    • thickness:矩形を描く線の太さ <int>
    • lineType:矩形を描く線の種類 <int>
      • 負の値で指定すると、塗りつぶしになる
    • shift:座標の小数点以下の桁を表すビット数 <int>
  • 戻り値:矩形が描画された画像 <ndarray>

rectangle(img, rec, color, thickness=1, lineType=cv2.LINE_8, shift=0)

  • 引数
    • img:矩形を描画する画像 <ndarray>
      • 引数として指定したimgにも矩形が上書きされてしまうので注意が必要!
    • rec:描画する矩形 <Rect>
    • color:矩形の色 <Scalar>
    • thickness:矩形を描く線の太さ <int>
    • lineType:矩形を描く線の種類 <int>
      • 負の値で指定すると、塗りつぶしになる
    • shift:座標の小数点以下の桁を表すビット数 <int>
  • 戻り値:矩形が描画された画像 <ndarray>

resize

@ [APIドキュメント]

resize(src, dsize[, dst[, fx[, fy[, interpolation]]]]) -> dst

  • 引数
    • src:入力画像 <ndarray>
    • dsize:出力画像のサイズ <Size>
  • 戻り値
    • dst:出力画像 <ndarray>

入力画像のサイズを指定された解像度にリサイズします。

Sobel

@ [APIドキュメント]

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

@ [APIドキュメント]

threshold(src, thresh, maxval, type[, dst]) -> retval, dst

  • 引数
    • src:入力画像 <ndarray>
    • thresh:閾値の値 <float>
    • maxval:どの値に二値化するかを定める(0 と maxval に二値化される) <float>
    • type:二値化の方法 <int>
    • dst
  • 戻り値
    • retval:大津法・トライアングル法を用いた時の閾値 <float>
    • dst:出力画像 <ndarray>

warpAffine

@ [APIドキュメント]

warpAffine(src, M, dsize[, dst[, flags[, borderMode[, borderValue]]]]) -> dst

watershed

@ [APIドキュメント]

watershed(image, markers) -> markers