ホームページ > バックエンド開発 > Python チュートリアル > Python を使用して写真から輪郭を抽出する方法

Python を使用して写真から輪郭を抽出する方法

王林
リリース: 2023-08-26 16:33:30
オリジナル
2184 人が閲覧しました

Python を使用して写真から輪郭を抽出する方法

Python を使用して写真から輪郭を抽出する方法

はじめに:
画像処理とコンピューター ビジョンの分野では、輪郭抽出は非常に重要なタスクです。画像内の対象物体を背景から分離し、物体の形状エッジ情報を抽出することができます。この記事では、Python で OpenCV ライブラリを使用して画像から輪郭を抽出する方法を紹介します。

  1. OpenCV ライブラリのインストール
    開始する前に、OpenCV ライブラリがインストールされていることを確認する必要があります。 pip コマンドを使用してインストールできます。

    pip install opencv-python
    ログイン後にコピー
  2. 必要なライブラリをインポートする
    まず、OpenCV ライブラリと numpy ライブラリをインポートする必要があります。画像処理には OpenCV が使用され、配列操作には numpy が使用されます。

    import cv2
    import numpy as np
    ログイン後にコピー
  3. 画像の読み込み
    OpenCV の imread 関数を使用して画像を読み込みます。サンプル画像はローカルに保存されており、実際の状況に応じてパスを変更できます。

    image = cv2.imread('path/to/image.jpg')
    ログイン後にコピー
  4. グレースケール画像への変換
    通常、輪郭抽出はグレースケール画像上で実行されるため、カラー画像をグレースケール画像に変換する必要があります。これは、OpenCV の cvtColor 関数を使用して実現できます。

    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    ログイン後にコピー
  5. 閾値処理を使用した二値化
    輪郭抽出は、多くの場合、画像を二値化することによって実現されます。 OpenCV の threshold 関数を使用して、グレースケール イメージをバイナリ イメージに変換できます。

    _, threshold = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
    ログイン後にコピー
  6. 輪郭抽出
    OpenCV の findContours 関数を使用して、バイナリ イメージに対して輪郭抽出を実行します。この関数は、抽出された輪郭と階層を返します。

    contours, _ = cv2.findContours(threshold, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
    ログイン後にコピー
  7. 輪郭の描画
    OpenCV の drawContours 関数を使用して、抽出された輪郭を元の画像上に描画できます。

    cv2.drawContours(image, contours, -1, (0, 255, 0), 2)
    ログイン後にコピー
  8. 結果の表示
    最後に、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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート