ChatGPTでプログラム生成⑪ Python 矩形検出

ChatGPTでプログラム生成します。画像に含まれる矩形を探し、それの枠を表示するプログラムをChatGPTを利用して生成します。

ChatGPTへ質問

以下の質問をChatGPTへ行います。

画像中の面積が500ピクセル以上の四角形を検出し枠を描く、画像名は外部から与える

この一つの質問を行うだけでソースコードが生成されます。

ChatGPTが生成したソースコード

以降に、ChatGPTが生成したソースコードを示します。

import cv2
import sys

# コマンドライン引数から画像のパスを取得
image_path = sys.argv[1]

# 画像の読み込み
image = cv2.imread(image_path)

if image is None:
    print("画像が読み込めませんでした。")
    sys.exit()

# 画像をグレースケールに変換
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 画像をぼかすことでノイズを除去
blurred = cv2.GaussianBlur(gray, (5, 5), 0)

# Cannyエッジ検出を行う
edges = cv2.Canny(blurred, 50, 150)

# 輪郭検出
contours, _ = cv2.findContours(edges.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

# 四角形を検出して枠を描く
for contour in contours:
    # 輪郭を近似して四角形にする
    epsilon = 0.02 * cv2.arcLength(contour, True)
    approx = cv2.approxPolyDP(contour, epsilon, True)

    # 近似された輪郭が四角形で、面積が500ピクセル以上ならば、枠を描く
    if len(approx) == 4 and cv2.contourArea(contour) >= 500:
        cv2.drawContours(image, [approx], -1, (0, 255, 0), 2)

# 結果の表示
cv2.imshow('Detected Rectangles', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

これをdRect.pyと名付け、テキストファイルで格納します。エンコードUTF-8としてください。

実行

このプログラムを実行します。まず、処理対象の入力画像を示します。

プログラムを実行します。

python dRect.py rsample2.jpg


ChatGPTを利用すれば、たった一行の質問で画像に含まれる矩形を探し、それの枠を表示するプログラムが生成されます。

すごいなChatGPT!(ChatGPT 3.5を利用しました。)