자 이번엔 노트북에 달린 카메라를 이용해 영상을 받아 출력해보자 우선 코드를 보자 import cv2 cap = cv2.VideoCapture( 0 ) print ( 'width :%d, height : %d' % (cap.get( 3 ) , cap.get( 4 ))) while ( True ): ret , frame = cap.read() # Read 결과와 frame if (ret) : gray = cv2.cvtColor(frame , cv2.COLOR_BGR2GRAY) # 입력 받은 화면 Gray로 변환 cv2.imshow( 'frame_color' , frame) # 컬러 화면 출력 cv2.imshow( 'frame_gray' , gray) # Gray 화면 출력 if cv2.waitKey( 1 ) == ord ( 'q' ): break cap.release() cv2.destroyAllWindows() opencv를 import 해준 뒤 VideoCapture() 함수를 이용해 웹 캠을 연결 한다. 전달 인자는 디바이스 아이디를 넘겨주는데 0을 넣어주면 보통 웹캠이나 카메라에 연결 된다. print 문으로 기본 웹캠의 width 와 height를 출력해보도록 하자 프로그램을 종료하려면 q 버튼을 눌러주면 종료! 아래는 코드 실행 결과 [컬러 출력 결과] [Gray 출력 결과] [출력된 카메라 해상도] 영상 저장은 cv2.VideoWriter_fourcc() 를 이용하면 가능하다 매개변수로 코덱을 넘겨주는데 'D','I','V','X' 와 같이 넘겨주거나 아래와 같이 *'DIVX' 로 넘겨주면 됨 import cv2
리스트 로그 처럼 계속 문자열을 받아서 추가하는 함수는 컨트롤은 에디트 컨트롤을 사용하고 ReplaceSel() 를 이용해서 계속 문자열을 넣도록 하자 { CString str; // 문자열을 저장할 변수 m_edtLoggingOut.SetSel(-2, -1); // 커서를 에디트박스 끝으로 이동 or int len = m_edtLoggingOut.GetWindowTextLength(); // 글자 길이를 받아오기 m_edtLoggingOut.SetSel(len, len); // 글자 길이만큼 커서 이동 m_edtLoggingOut.ReplaceSel(str); // 에디트 박스에 글자 추가 } 요렇게 하면 계속 글자를 추가 할 수 있다.
이 얼마만에 쓰는 파이썬 관련 글이란 말인가 ㅠㅠ 영상처리에서 마우스 만큼 또 많이 쓰는 게 없으니 오늘은 마우스 포인터 위치 받아오는 함수를 만들어보도록 하자 구글링 해보면 나오지만 마우스 포인터 위치를 받아오는 방법은 1. pynput 모듈을 이용하는 방법 2. OpenCV를 이용하는 방법 3. PyQt를 이용하는 방법 크게 3가지 경우가 많이 쓰이는 것 같다. 여기선 2번 OpenCV를 이용해서 해보도록 하자 왜냐면 이미 깔려있는데다가 다른 것 깔기 귀찮음으로 ㅎㅎ OpenCV를 이용하려면 마우스 콜백함수를 이용하여 위치를 받아오면 된다. 일단 코드 부터 보도록 하자 import cv2 as cv # OpenCV import import numpy as np # 행렬(img)를 만들기 위한 np import # 마우스 이벤트 콜백함수 정의 def mouse_callback ( event , x , y , flags , param ): print ( "마우스 이벤트 발생, x:" , x , " y:" , y) # 이벤트 발생한 마우스 위치 출력 img = np.zeros(( 256 , 256 , 3 ) , np.uint8) # 행렬 생성, (가로, 세로, 채널(rgb)),bit) cv.namedWindow( 'image' ) #마우스 이벤트 영역 윈도우 생성 cv.setMouseCallback( 'image' , mouse_callback) while ( True ): cv.imshow( 'image' , img) k = cv.waitKey( 1 ) & 0xFF if k == 27 : # ESC 키 눌러졌을 경우 종료 print ( "ESC 키 눌러짐" ) break cv.destroyAllWindows() 해당
댓글
댓글 쓰기