DNN/컴퓨터 비전

5) 주요 이미지 라이브러리 Open CV

Return 2021. 8. 16. 10:16

# OpenCV 이미지 로딩 

 

- imread()를 이용한 이미지 로딩 

 > OpenCV에서 이미지 로딩은 imread('파일명')을 이용 , imread()은 파일을 읽어 넘파이 배열로 변환 (x,y,z)세로,가로,채널 

 

* OpenCV가 이미지를 RGB 형태가 아닌 BRG 형태로 로딩하기 때문에 이미지의 색감이 변한다. 

 

- 이미지 로딩시 BGR을 RGB로 변환 

 > cvtColor (이미지 배열 , cv2.COLOR_BGR2RGB) 이용 

 

- OpenCV 이미지 배열을 파일에 쓰기 

 > opencv에서 메모리에 있는 이미지 배열을 저장하려면 imwrite('출력파일명',img_array)이용. 이때 imwrite()로 인해 BGR형태인 이미지 배열을 다시 RGB 형태로 변환하여 저장함 . 즉 , imread()로 일고 imwrite()로 출력하면서 이미지파일은 다시 RGB형태로 저장된다. 

 

#OpenCV 영상처리 개요 

 

 > Video Capture 클래스는 동영상을 개별 frame으로 하나씩 읽어들이는 기능을 제공한다. 

cap = cv2.VideoCapture(Video_input_path)

while True:
	has_Frame , img_frame = cap.read()
    if not has_Frame:
    	break

 

- Vdieo Capture 개요

 

 - Video Capture 객체는 생성 인자로 입력 Video파일 위치를 받아 생성 

cap = cv2.VideoCapture(video_input_path)

 - 입력 video 파일의 다양한 속성을 가져올 수 있다. 

 

영상 Frame 너비 , 영상 Frame 높이 , 영상 FPS

cap.get(cv2.CAP_PROP_FRAME_WIDTH)
cap.get(cv2.CAP_PROP_FRAME_HIGHT)
cap.get(cv2.CAP_PROP_FPS)

 

 - Video Writter 개요 

Video Writter 객체는 write할 동영상 파일 위치, encoding 코덱 유형 , write fps 수치 , frame 크기를 생성자로 입력 받아 이들 값에 따른 동여상 write 한다. 

 

cap = cv2.VideoCapture(video_input_path)
codec = cv2.VideoWritter(*'XVID')

vid_size = (round(cap.get(cv2.get(CV2~WIDTH)),round(cap.get(cv2.get(CV2~HEIGHT)))
vid_fps = cap.get(cv2.CAP_PROP_FPS)

vid_writter = cv2.VideoWritter(video_output_path,codec,vid_fps,vid_size)