最近子供の手続きをする際にたまたま証明写真を提出しないといけないですが、子供が遊びたくて写真撮るのに協力的な感じじゃなかったです。なので、pythonのrembgを使って日常の写真を証明写真にしようとしました。
rembg
は、写真の背景を簡単に取り除くことができるツールです。このツールを使えば、自宅で撮った写真を証明写真の形に編集することができます。以下はその手順の簡単な説明です。
1. rembg のインストール:
pip install rembg
2.日常の写真を準備:
普段撮影した写真を選びます。
3.背景を削除:
from rembg import remove
import cv2
import numpy as np
import os
def main():
input_path = 'input.jpg'
output_path = 'output.jpg'
# ファイルの存在確認
if not os.path.exists(input_path):
print(f"Error: Input file '{input_path}' not found.")
return
try:
# 画像の読み込み
input_img = cv2.imread(input_path)
if input_img is None:
print(f"Error: Failed to load image '{input_path}'.")
return
# 背景除去
output_img = remove(input_img)
# 黒い背景を白に変える処理
h, w = output_img.shape[:2]
if output_img.shape[2] == 4:
alpha_channel = output_img[:, :, 3]
white_bg = np.full((h, w, 3), 255, dtype=np.uint8)
result_img = cv2.cvtColor(output_img, cv2.COLOR_BGRA2BGR)
alpha_channel_normalized = alpha_channel / 255.0
for c in range(3):
result_img[:, :, c] = result_img[:, :, c] * alpha_channel_normalized + white_bg[:, :, c] * (1 - alpha_channel_normalized)
else:
result_img = output_img
# 画像の保存
cv2.imwrite(output_path, result_img)
print(f"Success: Output image saved to '{output_path}'.")
except cv2.error as e:
print(f"OpenCV Error: {e}")
except Exception as e:
print(f"Unexpected Error: {e}")
if __name__ == "__main__":
main()
この手順に従うことで、自宅で手軽に子供の証明写真を準備できました。