開発環境
- Visual Studio Code (Version: 1.85.1)
- Python 3.11.7
- numpy 1.26.3
- opencv-python 4.9.0.80
入力画像
コード
import cv2
import numpy as np
CROP_RADIUS = 256
COLOR_WHITE = (255, 255, 255, 255)
src_img = cv2.imread("src.png")
if src_img is None:
print("Error: Image not loaded")
else:
src_height, src_width = src_img.shape[:2]
center_point = (src_width // 2, src_height // 2)
img = np.zeros((src_height, src_width, 4), dtype=np.uint8)
img = cv2.circle(img, center_point, CROP_RADIUS, COLOR_WHITE, cv2.FILLED)
img[:,:,:3] = src_img[:,:,:3]
cv2.imwrite("circle_cropped.png", img)
出力画像
アンチエイリアス
境界のギザギザが気になったのでアンチエイリアスをかけました。
img = cv2.circle(img, center_point, CROP_RADIUS, COLOR_WHITE, cv2.FILLED,lineType=cv2.LINE_AA)