Python
 Computer >> コンピューター >  >> プログラミング >> Python

PythonでOpenCVを使用して輪郭を検索して描画する


画像分析の目的で、Opencv(Open Source Computer Vision Library)pythonライブラリを使用します。 opencvのインストール後にインポートする必要のあるライブラリ名はcv2です。

以下の例では、画像ファイルに存在する輪郭を見つけます。輪郭は、画像に存在する形状を識別するのに役立ちます。等高線は、同じ強度を持つ画像の境界に沿ったすべての点を結ぶ線として定義されます。 OPenCVのfindContours関数は、輪郭を識別するのに役立ちます。同様に、drawContours関数は、輪郭を描画するのに役立ちます。以下は両方の構文です。

構文

cv.FindContours(image, mode=CV_RETR_LIST, method=CV_CHAIN_APPROX_SIMPLE)
Where
image is the name of the image
Mode is Contour retrieval mode
Method is Contour approximation method

cv.DrawContours(img, contours, contourIdx, colour, thickness)
Where
image is the name of the image
contours – All the input contours.
contourIdx – Parameter indicating a contour to draw. If it is negative, all the contours are drawn.
color – Color of the contours
thickness is how thick are the lines drawing the contour

以下の例では、以下の画像を入力画像として使用しています。次に、以下のプログラムを実行して、周囲の輪郭を取得します。

PythonでOpenCVを使用して輪郭を検索して描画する

上の図には3つの形があります。以下のプログラムを使用して、それらのすべてまたは一部の周りに輪郭を描くことができます。

import cv2
# Load an image
image = cv2.imread(“path to image file”)
# Changing the colour-space
LUV = cv2.cvtColor(image, cv2.COLOR_BGR2LUV)
# Find edges
edges = cv2.Canny(LUV, 10, 100)
# Find Contours
contours, hierarchy = cv2.findContours(edges,cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
# Find Number of contours
print("Number of Contours is: " + str(len(contours)))
# Draw yellow border around two contours
cv2.drawContours(image, contours, 0, (0, 230, 255), 6)
cv2.drawContours(image, contours, 2, (0, 230, 255), 6)
# Show the image with contours
cv2.imshow('Contours', image)
cv2.waitKey(0)

上記のコードを実行すると、次の結果が得られます-

出力

Number of Contours found = 3

そして、以下の出力を示す図が表示されます。

PythonでOpenCVを使用して輪郭を検索して描画する


  1. PythonOpenCvモジュールを使用したヒストグラムの等化

    これは、画像のヒストグラムを使用してコントラスト調整を行う画像処理の方法です。 実際、この方法は通常、多くの画像のグローバルコントラストを増加させます。特に、画像の使用可能なデータが近いコントラスト値で表される場合、この調整により、強度をヒストグラム上でより適切に分散でき、ローカルコントラストの低い領域が可能になります。より高いコントラストを得る。 OpenCVにはこれを行う関数cv2.equalizeHist()があり、その入力は単なるグレースケール画像であり、出力はヒストグラム均等化された画像です。 この手法は、画像のヒストグラムが特定の領域に限定されている場合に適しています。強度の

  2. PythonでOpenCVを使用した画像の侵食と拡張

    この問題では、PythonがOpenCVモジュールを使用して侵食や膨張などの形態学的操作を実行する方法を確認します。 OpenCVライブラリは、主にコンピュータビジョン用に設計されています。オープンソースです。もともとはIntelによって設計されました。これは、オープンソースBSDライセンスの下で無料で使用できます。 OpenCV機能を使用するには、 pipを使用してダウンロードする必要があります 。 sudo pip3 install opencv-python Erosion Imageとは何ですか? 侵食では、前景オブジェクトの境界を侵食します。これは、画像から小さなホワイトノ