Pythonで長方形領域をフィルタリングする方法は何ですか?

OpenCVライブラリを使用して画像処理と分析を行うことで、矩形領域を選別することができます。以下はPythonで実装された例であり、OpenCVを使用して矩形領域を選別する方法を示しています。

最初に、OpenCVライブラリをインストールします。

pip install opencv-python

その後、以下のコードを使用して画像を読み込み、前処理を行います。

import cv2
import numpy as np

image = cv2.imread("image.jpg")  # 加载图像
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)  # 转换为灰度图像
blurred = cv2.GaussianBlur(gray, (5, 5), 0)  # 对灰度图像进行高斯模糊

# 执行边缘检测
edges = cv2.Canny(blurred, 50, 150)

# 执行霍夫直线检测
lines = cv2.HoughLinesP(edges, 1, np.pi / 180, 100, minLineLength=100, maxLineGap=10)

次に、検出された直線をさらに選別することができます。例えば、傾きに基づいて選別し、特定の範囲内の傾きを持つ直線のみを保持することができます。

filtered_lines = []
for line in lines:
    x1, y1, x2, y2 = line[0]
    slope = (y2 - y1) / (x2 - x1)  # 计算斜率
    if abs(slope) > 0.5 and abs(slope) < 2:  # 筛选斜率在0.5和2之间的直线
        filtered_lines.append(line)

最終的に、選択された直線を元の画像に描画して、結果を観察することができます。

for line in filtered_lines:
    x1, y1, x2, y2 = line[0]
    cv2.line(image, (x1, y1), (x2, y2), (0, 255, 0), 2)  # 绘制直线

cv2.imshow("Result", image)
cv2.waitKey(0)
cv2.destroyAllWindows()

このようにして、特定の範囲の傾きを持つ直線を選択することで、長方形領域を見つけることができます。実際の状況に応じて、パラメータを調整してより良い結果を得ることができます。

bannerAds