Python OpenCV 図形のコーナーの座標データをcsv出力する方法

まくまく
まくまく
Pythonの画像処理ライブラリ OpenCVで検出した図形のコーナーの座標をcsvファイルとして書き出してみようと思います。

元画像


使用する画像はこちら。白背景の中央に星形の図形が描写された画像です。

以下のプログラムを実行して、この図形のコーナーを検出したいと思います。



出力


プログラムを実行すると、図形のコーナーを検出することができました。赤い点が検出点です。

コーナー検出は、Shi-Tomasiの検出法で行いました。


検出した点をcsvで書き出すこともできます。

書き出したcsvファイルをエクセルで開いて、グラフを作成してみました。値も問題なさそうです。

OpenCVとエクセルで座標が反転しているので注意してください。OpenCVは左上が原点、エクセルのグラフは左下が原点です。

サンプルプログラム

#ライブラリのインポート
import numpy as np
import pandas as pd
import cv2

#画像読み込み
img = cv2.imread("test.jpeg")

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

#空のリスト作成
xvalue = []
yvalue = []

#コーナー検出
corners = cv2.goodFeaturesToTrack(gray,25,0.01,10)
corners = np.int0(corners)

for i in corners:
    x,y = i.ravel()
    cv2.circle(img, (x,y), 3, (0,0,255), -1)
    print(x,y)
    xvalue.append(x)
    yvalue.append(y)

#リストからデータフレーム作成
df = pd.DataFrame(list(zip(xvalue,yvalue)), columns= ["X座標","Y座標"])
df.to_csv("202201 corner.csv", encoding="shift_jis", index=False)

#画像書き出し
cv2.imwrite("test.jpg", img)

Python OpenCVを用いた画像処理についてはこちらの記事でまとめています。>>>Python OpenCV 使い方まとめ

タイトルとURLをコピーしました