import cv2
cap = cv2.VideoCapture(0) # 카메라 0번 장치 연결
width = cap.get(cv2.CAP_PROP_FRAME_WIDTH) # 프레임 폭 값 구하기
height = cap.get(cv2.CAP_PROP_FRAME_HEIGHT) # 프레임 높이 값 구하기
print("Original width: %d, height:%d" % (width, height) )
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 320) # 프레임 폭을 320으로 설정
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 240) # 프레임 높이를 240으로 설정
width = cap.get(cv2.CAP_PROP_FRAME_WIDTH) # 재지정한 프레임 폭 값 구하기
height = cap.get(cv2.CAP_PROP_FRAME_HEIGHT) # 재지정한 프레임 폭 값 구하기
print("Resized width: %d, height:%d" % (width, height) )
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("can't open camera!")
cap.release()
cv2.destroyAllWindows()
<코드 해석>
VideoCapture 객체를 cap이라는 변수에 담는다.
선언되어 있는 getter, setter를 통해 값을 읽고 바꿔준다.
isOpened를 통해 객체가 제대로 생성되어 있는지 확인한다.
read()를 통해 ret(T/F)와 img를 설정하고, 제대로 읽어왔다면 imshow()를 통해 보여준다.
1ms동안 키입력을 확인하고 없으면 반복, 있다면 반복을 종료한다.
release()를 통해 선언되어 있는 cap객체의 점유를 포기한다.
destroyAllWindows()를 통해 imshow()로 열려있는 모든 창을 닫는다.
<new!>
VideoCapture ().set(propId, value) - 영상의 propId 값 설정하기
OOP 객체에서 흔히 볼 수 있는 getter와 setter인 것 같다.
고로 propId도 get() 메소드와 동일할 것
'OpenCV' 카테고리의 다른 글
[OpenCV_01_09_영상 녹화하기] (0) | 2022.12.10 |
---|---|
[OpenCV_01_08_사진 찍기] (0) | 2022.12.10 |
[OpenCV_01_06_프레임 지정해서 영상 읽기] (0) | 2022.12.09 |
[OpenCV_01_05_카메라 불러오기] (0) | 2022.12.08 |
[OpenCV_01_04_비디오 불러오기] (1) | 2022.12.08 |