Loading [MathJax]/extensions/tex2jax.js

2019-05-24

PythonでOpenCVでのラベリング処理

PythonでOpenCVでのラベリング処理を行う場合は、下記のコード通りに行います。注意点は
  • 画像を2値化すること
  • ラベリング結果は画像によっては画像全体を抽出する場合がある
後者については、最大の面積を持つ領域を取り出したい場合に要注意です。

#画像をグレースケールで読み込み
grayImage = cv2.imread(fileName,0)
#二値変換
_ ,binImage = cv2.threshold(grayImage,0, 255, cv2.THRESH_BINARY)
# ラベリング処理
nLabels, labelImages, data, center = cv2.connectedComponentsWithStats(binImage)
#ここのラベルの情報を取り出したい場合
for label in range(0,nLabels):
x,y = center[label]
x,y,w,h,size = data[label]
# 面積最大のインデックスを求める場合
max_index = np.argmax(data[:,4])
view raw labeling.py hosted with ❤ by GitHub


2019-05-22

Python:マルチページTIFFを読み込んで1ページずつ処理する(imreadmulti利用)

PythonでマルチページTIFFを処理する方法。過去記事では、
  • OpenCVでは未対応
と書いていましたが、OpenCV3からはimreadmultiが使えるようなので、それでシンプルに解決です。戻り値は、読み取り成功か失敗かのboolと、イメージのリスト(matの配列)が返ってきます。
ref, images=cv2.imreadmulti('sample.tif',flags=0) #flags 0:Gray, 1:RGB, -1:RGBA
for mm in images:
cv2.imshow("tif",mm)
cv2.waitKey(0)
cv2.destroyAllWindows()