banner
李大仁博客

李大仁博客

天地虽大,但有一念向善,心存良知,虽凡夫俗子,皆可为圣贤。

[Python] OpenCVを使用して輪郭検出を行う

マスクレイヤーの輪郭検索と画像へのマージ
最初に、エッジピクセルをぼかすためにガウシアンブラーを使用します。
次に、一部の散在点を破棄するために Canny を使用して境界を検出します。
最後に、findContours を使用して外枠を見つけます。

マスクレイヤーの輪郭検索と画像へのマージ#

def drawMaskContoursOverImage(image, mask):
# カラースペースを変換
gray = cv2.cvtColor(mask, cv2.COLOR_BGR2GRAY)
#image = cv2.cvtColor(image, cv2.COLOR_GRAY2BGR)

# 3x3のガウシアンブラー
# gray = cv2.GaussianBlur(gray, (3, 3), 0)
# エッジを検出するためにCannyを使用
gray = cv2.Canny(gray, 100, 300)

ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)

# binaryは最終的な二値画像です
# findContours()の第一引数はソース画像、第二引数は輪郭検索モード、第三引数は輪郭近似方法です
# 出力は輪郭と階層構造で、輪郭は画像内のすべての輪郭のPythonリストで、各個別の輪郭は(x,y)座標のNumpy配列です
binary, contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
cv2.drawContours(image, contours, -1, (0, 255, 0), 1)

# 画像を保存
cv2.imwrite('%s.masked.png'%pair[0], image, [int(cv2.IMWRITE_PNG_COMPRESSION),3])

参考: https://blog.csdn.net/dz4543/article/details/80655067

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。