Python を使用して写真から輪郭を抽出する方法
はじめに:
画像処理とコンピューター ビジョンの分野では、輪郭抽出は非常に重要なタスクです。画像内の対象物体を背景から分離し、物体の形状エッジ情報を抽出することができます。この記事では、Python で OpenCV ライブラリを使用して画像から輪郭を抽出する方法を紹介します。
OpenCV ライブラリのインストール
開始する前に、OpenCV ライブラリがインストールされていることを確認する必要があります。 pip コマンドを使用してインストールできます。
pip install opencv-python
必要なライブラリをインポートする
まず、OpenCV ライブラリと numpy ライブラリをインポートする必要があります。画像処理には OpenCV が使用され、配列操作には numpy が使用されます。
import cv2 import numpy as np
画像の読み込み
OpenCV の imread
関数を使用して画像を読み込みます。サンプル画像はローカルに保存されており、実際の状況に応じてパスを変更できます。
image = cv2.imread('path/to/image.jpg')
グレースケール画像への変換
通常、輪郭抽出はグレースケール画像上で実行されるため、カラー画像をグレースケール画像に変換する必要があります。これは、OpenCV の cvtColor
関数を使用して実現できます。
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
閾値処理を使用した二値化
輪郭抽出は、多くの場合、画像を二値化することによって実現されます。 OpenCV の threshold
関数を使用して、グレースケール イメージをバイナリ イメージに変換できます。
_, threshold = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
輪郭抽出
OpenCV の findContours
関数を使用して、バイナリ イメージに対して輪郭抽出を実行します。この関数は、抽出された輪郭と階層を返します。
contours, _ = cv2.findContours(threshold, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
輪郭の描画
OpenCV の drawContours
関数を使用して、抽出された輪郭を元の画像上に描画できます。
cv2.drawContours(image, contours, -1, (0, 255, 0), 2)
結果の表示
最後に、OpenCV の imshow
関数を使用して結果を表示します。
cv2.imshow('Contours', image) cv2.waitKey(0) cv2.destroyAllWindows()
完全なコード例:
import cv2 import numpy as np # 加载图片 image = cv2.imread('path/to/image.jpg') # 转换为灰度图像 gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # 二值化处理 _, threshold = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY) # 轮廓提取 contours, _ = cv2.findContours(threshold, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) # 绘制轮廓 cv2.drawContours(image, contours, -1, (0, 255, 0), 2) # 显示结果 cv2.imshow('Contours', image) cv2.waitKey(0) cv2.destroyAllWindows()
結論:
この記事では、Python で OpenCV ライブラリを使用して画像から輪郭を抽出する方法を紹介します。画像に対してグレースケール変換と二値化を行い、findContours
関数で輪郭を抽出することで、最終的に抽出した輪郭を元画像上に描画することができます。輪郭抽出は画像処理、コンピュータビジョン、ターゲット検出などの分野で幅広く利用でき、非常に実用的な技術です。
以上がPython を使用して写真から輪郭を抽出する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。