2023年5月18日木曜日

Pythonで自家用座標計測ツール作成

 Creating a home-use coordinate measurement tool with Python


I created a home-use coordinate measurement tool in Python. very convenient. Python utilization in hobby activities is getting on track.


Pythonで自家用座標計測ツールを作成しました。とても便利です。趣味活動におけるPython活用が軌道に乗りつつあります。

1 土器破片プロット図からBlender3D空間換算座標を計測するツール

1-1 ツールの趣旨

有吉北貝塚発掘調査報告書に北斜面貝層の土器破片平面分布図と土器破片立面図が掲載されています。それぞれの分布図は既にBlender3D空間に配置してあります。


土器破片分布図(平面、立面)のBlender3D空間配置

今回、それぞれの分布図について、マウスでクリックすると直接Blender3D空間の座標をコンソールに書き出すPythonスクリプトを作成しました。

1-2 ツール運用の様子


ツール運用の様子

1-3 Pythonスクリプト

……………………………………………………………………

import cv2

def onMouse(event, x, y, flags, params):

    if event == cv2.EVENT_LBUTTONDOWN:

        print('{:.03f}'.format((y-346)/379), '{:.03f}'.format((x-496)/379), 0)

img = cv2.imread('keisokuh22.png')

cv2.namedWindow('keisokuh22', cv2.WINDOW_NORMAL)

cv2.imshow('keisokuh22', img)

cv2.setMouseCallback('keisokuh22', onMouse)

cv2.waitKey(0)

……………………………………………………………………

2 メモ

画像の座標を読み取るPythonスクリプトの雛形は次のwebページを参考としました。今回はこの雛形を基本としました。同種スクリプトは他の多くのwebページで紹介されています。

座標読み取り 例

https://magazine.techacademy.jp/magazine/51035

この雛形に画像Windowの拡大縮小機能を次のweb例を参考に付加しました。

画像Window拡大縮小機能 例

https://rasp.hateblo.jp/entry/2016/01/22/230852

さらに、座標の少数桁数を限定する機能を次のweb例を参考に付加しました。

少数桁限定 例

https://magazine.techacademy.jp/magazine/23378

最後に、画像の座標からBlender3D空間座標を換算する式を書き込み、ツールを完成させました。

この記事では平面分布図からBlender3D空間座標を計測する例を示しましたが、同じ土器破片が掲載されている立面分布図からもBlender3D空間座標を読み取り、その二つを合成することにより、土器破片のBlender3D空間座標が完成します。Blender3D空間座標は別に作成したPythonスクリプトで、Blender3D空間にCUBE(土器破片)をプロットするのに使います。

2023.05.09記事「Blenderで多数座標にCUBEを一括生成するスクリプト

3 感想

見よう見まねのレベルですが、Pythonスクリプトを趣味活動で実用して、活動の効率化、高度化が図れることが判りました。今後より積極的に出来るだけ多くの場面でPython、BlenderPythonを活用していくことにします。


0 件のコメント:

コメントを投稿