このプロジェクトは、画像内の月の中心を検出し、その中心を基準に画像を自動で切り抜くPythonスクリプトを提供します。天体写真、特に月の写真のトリミングに役立ちます。
moon_autocrop.py スクリプトは以下の機能を提供します。
- 月の中心検出: OpenCVの画像処理技術(グレースケール変換、ガウシアンブラー、ハフ変換による円検出)を使用して、画像内の月の中心座標と半径を特定します。
- 自動切り抜き: 検出された月の中心を基準に、指定されたサイズで画像を自動的に切り抜きます。切り抜き範囲は画像の境界内に収まるように調整されます。
- Exifデータ保持: 切り抜き後の画像に、元の画像のExifデータを可能な限りコピーします。
- 複数サイズでの出力: 実行時に、異なるアスペクト比とサイズの画像を複数生成できます(例: 1000x1000, 1920x1080, 1080x1920)。
- デバッグ用出力: 月の検出結果を視覚的に確認できるよう、中心と円が描画されたアノテーション付き画像を保存します。
このスクリプトを実行するには、以下のライブラリが必要です。
opencv-pythonnumpypiexif
これらのライブラリは pip を使用してインストールできます。
pip install opencv-python numpy piexifスクリプトはコマンドラインから実行します。引数として処理したい画像ファイルのパスを指定します。
python3 moon_autocrop.py <image_path>例:
python3 moon_autocrop.py IMG_0496.JPGスクリプトが正常に実行されると、以下のファイルが生成されます。
detected_moon_<元のファイル名>: 月の中心と外接円が描画されたデバッグ用画像。<元のファイル名>a.<拡張子>: 月の中心を基準に1000x1000ピクセルで切り抜かれた画像。<元のファイル名>b.<拡張子>: 月の中心を基準に1920x1080ピクセルで切り抜かれた画像。<元のファイル名>c.<拡張子>: 月の中心を基準に1080x1920ピクセルで切り抜かれた画像。
- 画像内に月が明確に写っている必要があります。
- 月の形状が大きく歪んでいる場合や、他の明るい物体が写り込んでいる場合は、検出精度が低下する可能性があります。
- Exifデータのコピーは
piexifライブラリに依存しており、すべてのExifタグの完全なコピーを保証するものではありません。