이미지에 여백을 추가하여 사각형으로 만드는 방법
2144 단어 파이썬OpenCV기계 학습DeepLearning
그러나, 이미지에 따라서는 애스펙트비가 1:1이 아니기 때문에 단지 리사이즈하면 왜곡되어 버리는 일이 있습니다.
그렇게 하지 않으려면 이미지에 여백을 추가하여 사각형으로 성형하고 싶습니다.
소스 코드
import cv2
import math
if __name__ == "__main__":
img = cv2.imread('./sample.jpg')
height, width, color = img.shape # 画像の縦横サイズを取得
# 縦長画像→幅を拡張する
if height > width:
diffsize = height - width
# 元画像を中央ぞろえにしたいので、左右に均等に余白を入れる
padding_half = int(diffsize / 2)
padding_img = cv2.copyMakeBorder(img, 0, 0, padding_half, padding_half, cv2.BORDER_CONSTANT, (0, 0, 0))
cv2.imwrite('./[email protected]', padding_img)
# 横長画像→高さを拡張する
elif width > height:
diffsize = width - height
padding_half = int(diffsize / 2)
padding_img = cv2.copyMakeBorder(img, padding_half, padding_half, 0, 0, cv2.BORDER_CONSTANT, (0, 0, 0))
cv2.imwrite('./[email protected]', padding_img)
import cv2
import math
if __name__ == "__main__":
img = cv2.imread('./sample.jpg')
height, width, color = img.shape # 画像の縦横サイズを取得
# 縦長画像→幅を拡張する
if height > width:
diffsize = height - width
# 元画像を中央ぞろえにしたいので、左右に均等に余白を入れる
padding_half = int(diffsize / 2)
padding_img = cv2.copyMakeBorder(img, 0, 0, padding_half, padding_half, cv2.BORDER_CONSTANT, (0, 0, 0))
cv2.imwrite('./[email protected]', padding_img)
# 横長画像→高さを拡張する
elif width > height:
diffsize = width - height
padding_half = int(diffsize / 2)
padding_img = cv2.copyMakeBorder(img, padding_half, padding_half, 0, 0, cv2.BORDER_CONSTANT, (0, 0, 0))
cv2.imwrite('./[email protected]', padding_img)
cv2.copyMakeBorder
를 사용했습니다.결과
Reference
이 문제에 관하여(이미지에 여백을 추가하여 사각형으로 만드는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/iroha71/items/691367b77b52dae8cbaf텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)