article thumbnail image
Published 2024. 5. 9. 14:03

오늘은 웹 캠을 연결해 파이썬으로 출력하고 경계선 검출까지만 해보았다.

 

확실히 계속 무엇이 생성자고 무엇이 멤버변수고 무엇이 객체인지를 항상 생각하면서 진행하니 더욱 재미가 있는 것 같다.

 

그리고 나중에 여러 오류들을 해결할때 이런 습관이 도움이 되지않을까 싶다. 

 

그러던 와중

edge = cv2.Canny(frame, 50, 50)

이걸보고 당연히 아 Canny는 생성자구나 했지만 

 

강사님이 함수라고 말씀하셔서 쉬는시간에 물어보려했으나 

#print(type(edge))  <class 'numpy.ndarray'>

 

 

먼저 프린트로 찍어보니 클래스가 Canny가 아니라 numpy였다.

 

그래서 뭔가하고 gpt에게 질문했고

 

놀랍게도 함수였다. 

클래스는 대문자로 시작하는게 rule이라더니 이렇게 어기는게 있어서 되겠나 라는 생각이 들었고

 

'C++ 라이브러리에서 가져온 컨벤션을 따라서 함수 이름이 대문자로 시작하는 경우가 있습니다.'

이부분에 대해서는 다음에 질문하는 개발자 탭에서 한번 알아보려한다.

 

# 수업코드

# hellocv.py
# opencv 패키지 설치 : opencv-python
# opencv 모듈명 : cv2          # computer vision

import cv2
import sys

# print(cv2.__version__)

# 시스템 기본 카메라부터 cv2.VideoCapture 객체 생성함
cap = cv2.VideoCapture(0)       # 카메라 열기함.  ==> 0 ? 0번째 카메라 시스템에서

if not cap.isOpened():      # 카메라 열기가 실패했다면
    print('Camera open failed!')        # 카메라가 없거나, 카메라 드라이버 미설정
    sys.exit()      # 프로그램 종료
    
# 카메라 프레임 해상도 출력
print('가로 Frame size:', round(cap.get(cv2.CAP_PROP_FRAME_WIDTH)))
print('세로 Frame size:', round(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))

# 매 프레임 처리 및 화면 출력
while True:
    ret, frame = cap.read()        # 다른 어플리케이션에서 이미 카메라를 사용중일 경우 작동 X, ex) zoom에서 카메라를 켜놨다거나 ,,,,
    # frame : 카메라로 부터 읽은 프레임 정보 저장
    # ret : 읽기 성공 여부저장 ( True | False )
    if ret == False:     # if not ret: 와 같음   // 읽기 실패했으면
        break       # 반복 종료함

    # edge = cv2.Canny(frame, 50, 150)       # 경계선 검출 함수 : 이미지의 경계선만 리턴함
    # cv2.Canny(프레임, threshold1, threshold2)
    # threshold1 : minVal 임계값 ( 값이 크면 엣지 검출이 어렵고, 작을수록 엣지 검출이 쉽다 )
    #           적으면 경계선이 이어짐. 크면 경계선이 끊어짐
    # threshold2 : maxVal 임계값 (경계선인지 아닌지를 판단하는 임계값임, 작을수록 엣지가 많아짐)
    # edge = cv2.Canny(frame, 150, 150)
    edge = cv2.Canny(frame, 50, 50)
    cv2.imshow('edge', edge)
    cv2.imshow('frame', frame)
    #print(type(edge))  <class 'numpy.ndarray'>
    # print('ret : ',ret)
    #print(frame)

    if cv2.waitKey(1) == 27:    # esc  키 누르면        # 이 조건을 넣어야 나옴
        break
# while end ----------------------------------------------------------------

# 카메라 사용 해제
cap.release()
cv2.destroyAllWindows()

'국비지원교육 > Python' 카테고리의 다른 글

numpy 정리  (0) 2024.05.23
opencv - 외곽선 추출  (0) 2024.05.14
opencv - 2 그리고 사진에서 텍스트 추출  (0) 2024.05.10
Python - WordCloud  (0) 2024.05.09
Python - 동적크롤링  (0) 2024.05.08
복사했습니다!