Ch 02. OpenCV-Python 기초 사용법 - 04. OpenCV 그리기 함수
Ch 02. OpenCV-Python 기초 사용법 - 05. 카메라와 동영상 처리하기 1
Ch 02. OpenCV-Python 기초 사용법 - 06. 카메라와 동영상 처리하기 2
오늘은 openCV에서 영상 위에 선이나, 도형, 문자를 그리는 기능과 카메라와 동영상을 어떻게 불러오고 저장하는지에 대해 공부해 보았습니다.
>> openCV 그리기 함수
openCV는 영상에 선, 도형, 문자열을 그리는 함수를 제공한다.
그리기 함수를 사용할 경우 영상 데이터 자체를 변경하기 때문에 원본데이터를 유지하고 싶다면 복사본을 만든 후 복사본 위에
그리기를 실행해야 한다.
cv2.line(img, pt1, pt2, color, thickness=None, lineType=None, shift=None)
-> 선을 그리는 함수이다. pt1과 pt2는 각각 시작점과 끝점의 좌표를 의미하고 튜플 형태로 x좌표와 y좌표를 넘겨주면 된다.
cv2.rectangle(img, pt1, pt2, color, thickness=None, lineType=None, shift=None)
cv2.rectangle(img, rec, color, thickness=None, lineType=None, shift=None)
-> 직사각형을 그리는 함수이다. pt1과 pt2에 각각 좌측 상단과 우측 하단의 꼭지점 좌표를 넘겨주면 된다.
rec은 (x, y, width, height)를 튜플로 받는다.
cv2.circle(img, center, radius, color, thickness=None, lineType=None, shift=None) -> 원을 그리는 함수
cv2.polylines(img, pts, isClosed, color, thickness=None, lineType=None, shift=None)
-> 다각형을 그리는 함수이다. pts에 여러개의 튜플 형태의 x, y 좌표를 리스트로 묶어 넘긴다.
isClosed는 폐곡선인지 아닌지를 나타내면 boolean값을 넘겨준다. true == 폐곡선
cv2.putText(img, text, org, fontFace, fontScale, color, thickness=None, ineType=None, shift=None) -> 문자를 그리는 함수
> 알아두면 좋은점
pt1과 pt2의 좌표는 영상 안에 있지 않아도 된다.
도형에서 thickness에 -1을 넣을 경우 내부를 채운다.
곡선 도형의 경우 lineType을 cv2.LINE_AA로 하여 조금더 부드럽게 그려주는 것이 보기 좋다.
>> 웹카메라 불러오기
우선 cap 변수에 VideoCapture 객체를 생성해준 후
cap.open(0) 함수로 pc의 디폴트 웹 카메라를 불러온다.
(cap.open(0)를 사용하지 않고 cv2.VideoCapture(0)으로도 실행 가능)
cap.isOpened() 함수로 카메라가 정상적으로 불러와졌는지 확인할 수 있다.
cv2.VideoCapture.read(image=None) -> retval, image
read 함수는 이미지를 성공적으로 불러왔는지의 여부도 같이 반환하기 때문에
frame = cap.read() 로 하면 안되고
ret, frame = cap.read() 로 해야 정상적으로 반환값을 받을 수 있다.
> 카메라 장치 속성값 참조
cap.get(propId) 함수를 사용하여 카메라 또는 비디오 장치의 속성 값들을 불러올 수 있다.
propId 옵션에는
CAP_PROP_FRAME_WIDTH
CAP_PROP_FRAME_HEIGHT
CAP_PROP_FPS
CAP_PROP_FRAME_COUNT
등 여러가지 속성값들을 가져올 수 있다.
cap.set(propId) 함수를 사용하여 속성값을 변경할 수도 있다.
(이미 정해져 있는 비디오의 속성 값은 변경하지 말자)
>> 동영상 불러오기
>> 동영상 저장하기
cv2.VideoWriter 클래스를 사용하여 일련의 프레임을 동영상 파일로 저장할 수 있다.
일련의 프레임은 모두 크기와 데이터 타입이 같아야 한다.
Fourcc: 어떤 압축 방식을 나타내는 4개의 문자로 이루어진 코드이다.
자주 사용하는 fourcc: DIVX, XVID, X264, MJPG
이러한 코덱들을 사용할 수 있게 컴퓨터 환경이 갖춰줘야 한다.
cv2.VideoWriter(filename, fourcc, fps, frameSize, isColor=None)
(영상 데이터만 저장함 소리 데이터는 저장하지 않음.)
강의 링크: bit.ly/2NTHHz7
'난 이 분야 전문가야! > OpenCV' 카테고리의 다른 글
컴퓨터비전인강 3주차:: 영상에서의 히스토그램 (0) | 2021.03.07 |
---|---|
컴퓨터비전인강 3주차 :: 영상에서의 산술과 다양한 색 공간 (0) | 2021.03.06 |
컴퓨터비전인강 2주차 :: 키보드, 마우스 이벤트 처리 및 트랙바 생성법 (0) | 2021.02.27 |
컴퓨터비전인강 1주차 :: matplotlib 이미지 openCV로 불러오기, 픽셀 참조 (0) | 2021.02.21 |
컴퓨터비전인강 1주차 :: 영상의 이해 및 openCV 주요함수 (1) | 2021.02.19 |