opencv를 다 까먹어 버려서 다시 복습을 좀 하려고 한다.
간단한 내용 정리와 GitHub에 올린 스크립트에서 주요 메서드만 정리를 할 것이다.
가상환경을 만드는 것부터 다시 빠르게 복습을 하자.
가상환경은 버전충돌을 피하기 위해, 말 그대로 가상환경을 생성하는 것이다.
가상환경을 사용하기 위해서는
1. 가상 환경 생성
2. 가상 환경 활성화
3. 가상 환경 비활성화
만 알면됨 ㅇㅇ
터미널에서
python -m venv 가상환경폴더명
ex) python -m venv .venv
이렇게 작성하면 생성된다.
source 가상환경폴더명/Scripts/activate #Window
source 가상환경폴더명/bin/activate #Mac
운영체제에 맞게 사용하면 된다.
가끔 이상한 위치의 다른 터미널에서 열고 이상한짓을 하기도 하는데 현재 터미널 위치를 확인하고 하자.
활성화되면
(.venv) 이거 뜸. 무조건 .venv가 아니라 가상환경이름으로 뜬다.
deactivate
그냥 이거 입력하면 종료됨
sudo rm -rf 가상환경폴더
뭔지 까먹으면 그냥 휴지통에 버리셈
그리고 이 환경에다가 패키지 설치하면서 관리하면 된다.
cv.imread('seulgi.png') # 영상 읽기
cv.imshow('Seulgi', img) # 윈도우에 영상 표시(윈도우이름,윈도우에 디스플레이할 이름)
cv.waitKey()
# 키가 눌리면 유니코드 값 반환, 인수생략또는 0인 경우 무한정 대기, 인수는 밀리초 단위
cv.destroyAllWindows()
# 모든 창 닫기

이처럼 윈도우창이 seulgi, 영상은 seulgi.png가 나온다.
OpenCV는 영상을 표현하는데 numpy를 사용한다.
3개의 채널로 구성되는데, RGB가 아닌 OpenCV는 BGR순이다.
gray_small = cv.resize(gray,dsize=(0,0),fx = 0.5,fy = 0.5)
# gray를 가로 세로 반으로 축소
cv.imwrite("seulgi_gray.png", gray)
#png파일 생성후 gray 객체에 저장
cap = cv.VideoCapture(0, cv.CAP_DSHOW)
# 0은 기본 카메라(보통 웹캠)를 의미하며, cv.CAP_DSHOW는 비디오를 바로 화면에 나타나게함
cap.isOpened()
# 카메라 연결 확인, 마연결시 False
ret,frame = cap.read()
# ret은 프레임 읽기 성공 여부(True/False)를 반환하고, frame은 실제 이미지 데이터를 담음
key = cv.waitKey(1)
if key == ord('q'):
break
# q입력시 루프빠져나감
cap.release()
# 카메라 연결해제
cv.VideoCapture(0, cv.CAP_DSHOW) - 카메라 디바이스를 열고 DirectShow 백엔드를 사용함
cap.isOpened() - 카메라가 성공적으로 열렸는지 확인
cap.read() - 카메라로부터 프레임 읽기 (반환값: 성공 여부와 이미지 프레임)
cv.waitKey(1) - 키보드 입력을 1ms 동안 기다림 (반환값: 누른 키의 아스키 코드)
ord('c') - 문자의 아스키 코드 값 반환 ('c'키와 비교할 때 사용)
frames.append(frame) - 리스트에 프레임 추가 ('c'키를 누를 때마다 저장)
cap.release() - 카메라 리소스 해제
cv.destroyAllWindows() - 모든 OpenCV 창 닫기
np.hstack((imgs, frames[i])) - 이미지를 수평으로 연결
cv.waitKey() - 인자 없이 호출하면 키 입력이 있을 때까지 무한정 기다림