OpenCV에서 이미지 회전 + 저장
개요
Python의 OpenCV에서 이미지를 회전하고 저장하는 프로그램을 만들었습니다.
CNN 학습에서 데이터 확장에 사용했습니다.
개발 환경
코드
import cv2
import os
import glob
def main():
img_files = glob.glob('*.jpg')
for f in img_files:
img = cv2.imread(f)
fname, fext = os.path.splitext(f)
height, width, channels = img.shape
center = (int(width/2), int(height/2))
#回転のテンプレ
#trans = cv2.getRotationMatrix2D(center, angle , scale)
#90度回転
trans1 = cv2.getRotationMatrix2D(center, 90 , 1.0)
#アフィン変換
image_1 = cv2.warpAffine(img, trans1, (width,height))
cv2.imwrite(fname+"_90.jpg", image_1)
#180度回転
trans2 = cv2.getRotationMatrix2D(center, 180 , 1.0)
#アフィン変換
image_2 = cv2.warpAffine(img, trans2, (width,height))
cv2.imwrite(fname+"_180.jpg", image_2)
#270度回転
trans3 = cv2.getRotationMatrix2D(center, 270 , 1.0)
#アフィン変換
image_3 = cv2.warpAffine(img, trans3, (width,height))
cv2.imwrite(fname+"_270.jpg", image_3)
if __name__ == "__main__":
main()
10번째 줄당(for f ~ 곳)의 코드는, 같은 폴더내의 이미지(이 코드에서는 jpg)를 모두 읽어들입니다.
trans은 이미지의 회전입니다. image_는 회전을 이미지에 반영하고 cv2.imwrite로 이미지를 저장합니다.
이 코드에서는 이미지를 90도, 180도, 270도 회전시킵니다.
마지막 두 줄의 if 문은 이미지를 읽을 때 for가 오류를 일으켰을 때의 것 같습니다 (자신은 별로 알 수 없습니다).
출력되는 이미지
입력 한 이미지는 여기입니다.
출력 된 이미지는 여기입니다.
화상이 정사각형이 아닌 경우는, 검은 부분이 발생해 버리므로, 종횡의 크기가 동일한 것 밖에 사용할 수 없습니다.
덤
가져올 이미지의 파일 이름에 전체 문자가 포함되어 있으면 오류가 발생합니다.
(OpenCV는 전각 문자를 포함한 파일을 읽을 수 없습니까?)
Reference
이 문제에 관하여(OpenCV에서 이미지 회전 + 저장), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mamomi64/items/a44f33189aeeda3a49e5
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import cv2
import os
import glob
def main():
img_files = glob.glob('*.jpg')
for f in img_files:
img = cv2.imread(f)
fname, fext = os.path.splitext(f)
height, width, channels = img.shape
center = (int(width/2), int(height/2))
#回転のテンプレ
#trans = cv2.getRotationMatrix2D(center, angle , scale)
#90度回転
trans1 = cv2.getRotationMatrix2D(center, 90 , 1.0)
#アフィン変換
image_1 = cv2.warpAffine(img, trans1, (width,height))
cv2.imwrite(fname+"_90.jpg", image_1)
#180度回転
trans2 = cv2.getRotationMatrix2D(center, 180 , 1.0)
#アフィン変換
image_2 = cv2.warpAffine(img, trans2, (width,height))
cv2.imwrite(fname+"_180.jpg", image_2)
#270度回転
trans3 = cv2.getRotationMatrix2D(center, 270 , 1.0)
#アフィン変換
image_3 = cv2.warpAffine(img, trans3, (width,height))
cv2.imwrite(fname+"_270.jpg", image_3)
if __name__ == "__main__":
main()
입력 한 이미지는 여기입니다.
출력 된 이미지는 여기입니다.
화상이 정사각형이 아닌 경우는, 검은 부분이 발생해 버리므로, 종횡의 크기가 동일한 것 밖에 사용할 수 없습니다.
덤
가져올 이미지의 파일 이름에 전체 문자가 포함되어 있으면 오류가 발생합니다.
(OpenCV는 전각 문자를 포함한 파일을 읽을 수 없습니까?)
Reference
이 문제에 관하여(OpenCV에서 이미지 회전 + 저장), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mamomi64/items/a44f33189aeeda3a49e5
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(OpenCV에서 이미지 회전 + 저장), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mamomi64/items/a44f33189aeeda3a49e5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)