얼마 전에 책을 한 권 구매했습니다. 파이썬으로 만드는 OpenCV 프로젝트라는 책인데, 예전에 못다한 영상처리에 대해 공부해보려고 합니다.
오늘은 가장 기초적인 부분으로, openCV 설치부터 이미지/비디오 파일을 읽어오는 방법에 대해 알아보겠습니다.
OpenCV 설치하기
- 터미널을 열고, 아래 내용을 입력하면 설치가 완료됩니다.
pip install opencv-contrib-python
pip install opencv-python
둘 중 아무거나 설치해도 기본 연습에는 지장이 없습니다.
이미지 파일 여는 예제
- 이미지 파일을 여는 방법은 다음과 같습니다. 비교적 직관으로 코드를 이해할 수 있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | import cv2 img_file = './sky.jpg' save_file = './sky_gray.jpg' img = cv2.imread(img_file, cv2.IMREAD_GRAYSCALE) if img is not None: cv2.imshow('IMG', img) cv2.imwrite(save_file, img) cv2.waitKey() cv2.destroyAllWindows() else: print('No image file') | cs |
IMREAD_GRAYSCALE
: 이미지를 흑백으로 여는 부분. 별도 지정하지 않으면 원본 색상 그대로 가져옵니다.waitKey
: 사용자의 키 인풋을 기다립니다. 인풋이 들어오면 다음 코드로 넘어가게 됩니다.비디오 파일 읽기 - 비디오 파일을 여는 방법도 이미지와 비슷합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | import cv2 video_file = './bunny.mp4' cap = cv2.VideoCapture(video_file) if cap.isOpened(): while True: ret, img = cap.read() if ret: cv2.imshow(video_file, img) cv2.waitKey(33) else: break else: print('cannot open the file') cap.release() cv2.destroyAllWindows() | cs |
ret
: 객체 초기화를 확인하는 변수로, 잘 읽어왔다면 true를 반환합니다.img
: 각 프레임에 해당하는 이미지 변수 즉, 갖고 있는 동영상 프레임에 맞춰서 waitKey 내에 밀리초 단위로 프레임에 맞는 딜레이를 지정해줘야 동영상을 제대로 불러올 수 있습니다.노트북 카메라 영상을 가져오고 싶다면?
- 노트북 또는 캠의 경우, 각각의 순서에 따라 0, 1, 2... 에 해당하는 인덱스 값을 가지고 있습니다. 원하는 캠 번호에 맞게 아래 코드에서 0 부분을 바꿔주면 됩니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | import cv2 cap = cv2.VideoCapture(0) if cap.isOpened(): while True: ret, img = cap.read() if ret: cv2.imshow('camera', img) if cv2.waitKey(1) != -1: break else: print('no frame') break else: print('cannot open the file') cap.release() cap.destroyAllWindows() | cs |
cv2.waitKey(1) != -1
: 1ms 동안 계속 인풋이 오는지를 체크합니다. 값이 들어온다면 종료할 수 있도록 합니다.
'Developer > OpenCV' 카테고리의 다른 글
[OpenCV] 카메라 영상 출력하기 (1) | 2020.08.14 |
---|---|
[OpenCV] 비트와이즈 연산 (Bitwise) (0) | 2020.04.09 |
[OpenCV] 알파블렌딩을 이용한 이미지 합성 (0) | 2020.04.08 |
[OpenCV] 이미지에서 관심영역 설정하기 (좌표 입력, 마우스 드래그) (6) | 2020.02.03 |
[OpenCV] 동영상 파일 기본 속성 확인 및 변경 (fps, width, height 등) (0) | 2020.01.27 |
댓글