OpenCV

[OpneCV_01_07_프레임 크기 수정하기]

선호하는 2022. 12. 9. 21:10
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() 메소드와 동일할 것