강의자료/머신러닝

[머신러닝활용] OpenCV 사용법 알아보기

파아란 기쁨 2023. 1. 10. 12:35

머신러닝 모델을 만들었다면 그것을 어떤식으로 활용을 하는지 무척 궁금했었는데요.

머신러닝 활용 편에서는 기존에 만들어진 모델들을 활용해서 어떻게 사용되는지 살펴 보도록 하겠습니다.

이미지 처리 분야에서 가장 많이 사용되는 OpenCV에 대해서 살펴 보도록 하겠습니다.

1. OpenCV란

OpenCV(Open source Computer Vision) 는 실시간 컴퓨터 비젼을 처리하는 목적으로 만들어진 라이브러리이다.

 

설치 방법

pip install opencv-python

2.이미지 파일 읽기

cv2.imread 함수로 이미지 파일을 읽는다.

이미지 파일은 Numpy array 형태의 값으로 입력이 되고 이 숫자가 해당 위치에서의 색을 의미한다.

 

사용법

cv2.imread(fileName, flag)

flag

cv2.IMREAD_COLOR(1) : 이미지 파일을 Color로 읽음. 투명한 부분은 무시하며 Default 설정입니다
cv2.IMREAD_GRAYSCALE(0) : 이미지 파일을 Grayscale로 읽음. 실제 이미지 처리시 중간 단계로 많이 사용합니다
cv2.IMREAD_UNCHAGED(-1) : 이미지 파일을 alpha channel 까지 포함해 읽음

이미지 파일 모양 확인

image.shape
#(224,224,3) 행의 픽셀 * 열의 픽셀 * 채널의 수(bgr)

 

3. 이미지 보기

cv2.imshow(title, image)

title 은 창의 제목을 표시, image 는 cv2.imread 로 읽은 값

 

키 입력될때까지 대기 및 윈도우 종료

cv2.waitKey(0) #0이면 무한대기 1이면 1ms 동안 대기
cv2.destroyAllWindows()

 

4. 이미지 저장

cv2.imwrite('result.jpg', image)

 

5. 카메라로 비디오 읽기

웹캠 연결

cap = cv2.VideoCapture(0)

if not cap.isOpened():
  exit()

웹캠이 여러개 인 경우 0,1,2 순으로 선택한다.

 

이미지 크기 설정

ret, img_bgr = cap.read() # (800, 1920, 3)
resized_width = 320 #출력할 크기 설정
video_size = (resized_width, int(img_bgr.shape[0] * resized_width // img_bgr.shape[1]))

비디오 읽어서 출력

while True:
  ret, img_bgr = cap.read()
  if not ret:
    break

  img_bgr = cv2.resize(img_bgr, video_size) #bgr 타입으로 읽는다.
  
  cv2.imshow('img', img_bgr) #화면에 출력
  if cv2.waitKey(1) == ord('q'): #q가 입력 되면 종료한다.
    break

cap.release()

6. 동영상 파일 읽기

cap = cv2.VideoCapture('video.mp4')

if not cap.isOpened():
  exit()

7. 동영상 파일 저장

fourcc = cv2.VideoWriter_fourcc(*'DIVX')
out = cv2.VideoWriter('output.avi', fourcc, 25.0, (640,480))

while (cap.isOpend()):
    ret, frame = cap.read()

    if ret:
        # 이미지 반전,  0:상하, 1 : 좌우
        frame = cv2.flip(frame, 0)

        out.write(frame)

        cv2.imshow('frame', frame)

        if cv2.waitKey(1) == ord('q'):
            break
    else:
        break

fourcc = cv2.VideoWriter_fourcc(*'DIVX') 에서 cv2.VideoWriter_fourcc('D','I','V','X') 와 같이 사용되기도 한다.

적용 가능한 포맷은 DIVX,XVID,MJPG,X264,WMV1,WMV2 등이 있다.

 


딥러닝 활용 방법에서는 대부분 웹캠을 이용하여 입력 된 이미지 처리를 머신러닝으로 훈련된 데이터를 기반으로 활용하는 방법을 살펴 볼 예정입니다.

 

따라서 웹캠과 이미지 처리를 담당하는 CV2 라이브러리 사용법에 대해서 살펴 보았습니다.

 

 

사업자 정보 표시
원당컴퓨터학원 | 기희경 | 인천 서구 당하동 1028-2 장원프라자 502호 | 사업자 등록번호 : 301-96-83080 | TEL : 032-565-5497 | Mail : icon001@naver.com | 통신판매신고번호 : 호 | 사이버몰의 이용약관 바로가기