본문 바로가기
Study/Python

[Python]OpenCV - 5 이미지 처리

by YoungD 2023. 10. 25.

                                                                                                                                                                                        In [1]:

# 1. 카메라 연동해서 띄우기
# 2-1. 버튼(1) 누르면 흑백화면으로 바꾸기
# 2-2. 버튼(2) 누르면 좌우반전 시키기
# 2-3. 버튼(3) 누르면 이진화 이미지 만들기
# 2-4. 버튼(4) 누르면 종료하기
In [2]:
import cv2

# 카메라 연동
cap = cv2.VideoCapture(0)

# 1번 버튼을 눌렀음을 감지하기 위한 변수
gray = False
thres = False
flip_rl = False
flip_ud = False

while True:
    ret, frame = cap.read() 

    if not ret:
        print('종료')
        break

    key = cv2.waitKey(30) # 30ms = 초당 33장의 사진, 코드가 실행되는 시간도 있기 때문에

    # 버튼(1) 누르면 흑백화면으로 바꾸기
    if key == 49:
        # 버튼을 눌렀을때만 흑백으로 바꾸기
        # frame = cv2.cvtColor(frame, cv2.COLOR_RGB2GRAY)
        # 버튼 누르면 흑백 다시 누르면 흑백 제거
        if gray:
            gray = False
        else :
            gray = True

    if gray: # 버튼을 한번 눌러서 gray의 값에 True가 대입되면 실행
        frame = cv2.cvtColor(frame,cv2.COLOR_RGB2GRAY)

    if key == 50:
        if thres:
            thres = False
        else:
            thres = True
    if thres:
        _, frame = cv2.threshold(frame, 128, 255, cv2.THRESH_BINARY)

    if key == 51: # 좌우 뒤집기
        if flip_rl:
            flip_rl = False
        else:
            flip_rl = True
    if flip_rl:
        frame = cv2.flip(frame,1)

    if key == 52: # 상하 뒤집기
        if flip_ud:
            flip_ud = False
        else:
            flip_ud = True
    if flip_ud:
        frame = cv2.flip(frame,-1)
        
    cv2.imshow('video', frame)
    
    # 5번 버튼
    if key == 53: # 4($)을 눌렀을때
        print('종료')
        break

cap.release()
cv2.destroyAllWindows()
종료

'Study > Python' 카테고리의 다른 글

[Python] OpenCV - 7 이미지 합성하기  (0) 2023.10.27
[Python] OpenCV - 6 템플릿 매칭  (0) 2023.10.26
[Python] OpenCV - 4 Flask  (0) 2023.10.24
[OpenCV] - 3 동영상 로드 및 저장  (1) 2023.10.23
[Python]OpenCV - 2 이진화  (1) 2023.10.20