OpenCV에서 이미지 회전 + 저장

6970 단어 파이썬OpenCV

개요



Python의 OpenCV에서 이미지를 회전하고 저장하는 프로그램을 만들었습니다.
CNN 학습에서 데이터 확장에 사용했습니다.

개발 환경


  • Windows10
  • Python ver3.7.7
  • OpenCV ver3.4.1

  • 코드


    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는 전각 문자를 포함한 파일을 읽을 수 없습니까?)

    좋은 웹페이지 즐겨찾기