\

OpenCVのcv2.HoughLinesP()関数は、画像内の直線を検出するための強力なツールです。この記事では、その使い方と直線検出に必要な前処理について詳しく解説します。

cv2.HoughLinesP()関数の基本

cv2.HoughLinesP()関数は、ハフ変換を用いて画像内の線分を検出するために利用されます。以下にその基本的な使用方法を示します。

import cv2
import numpy as np

# 画像の読み込み
img = cv2.imread("./sample.png")

# グレースケール化
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# ビット反転
reversed_gray = cv2.bitwise_not(gray)

# 直線の検出
lines = cv2.HoughLinesP(reversed_gray, rho=1, theta=np.pi/360, threshold=80, minLineLength=400, maxLineGap=5)

# 検出した直線の描画
for line in lines:
    x1, y1, x2, y2 = line[0]
    img = cv2.line(img, (x1, y1), (x2, y2), (0, 0, 255), 3)

# 画像の保存
cv2.imwrite("sample_after.png", img)

このコードは、画像から直線を検出し、それを赤色で描画します。

cv2.HoughLinesP()関数の引数について

cv2.HoughLinesP()関数にはいくつかの重要な引数があります。

  • rho:直角座標点と直線の距離。通常、1以上の値を指定します。
  • theta:直角座標点と直線の角度。
  • threshold:直線とみなすための閾値。この値以上の投票を得た直線だけが出力されます。
  • minLineLength:最小の線の長さ。これより短い線は無視されます。
  • maxLineGap:同一の線とみなす最大のギャップ。これより長いギャップを持つ線は別々の線として扱われます。

これらの引数を適切に設定することで、様々な種類の直線を検出することが可能になります。

まとめ

PythonとOpenCVを使用して画像から直線を検出する方法を解説しました。cv2.HoughLinesP()関数は非常に強力で、適切に使用すれば高精度な直線検出が可能です。ただし、その前に適切な前処理が必要であることを忘れないでください。これからもPythonとOpenCVを活用して、さまざまな画像処理タスクに挑戦してみてください。.

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です