- 키보드 입력 대기 함수
cv2.waitKey(delay=None) -> retval
- 키보드에서 'i' 또는 'I' 키를 누르면 영상을 반전
import sys
import numpy as np
import cv2
img=cv2.imread('cat.bmp',cv2.IMREAD_GRAYSCALE)
cv2.namedWindow('image')
cv2.imshow('image',img)
while True:
key=cv2.waitKey()
if key==27:
break
elif key==ord('i'):
img=~img
cv2.imshow('image',img)
cv2.destroyAllWindows()
- 마우스 이벤트 콜백함수 등록 함수
cv2.setMouseCallback(windowName,onMouse,param=None) -> None
- 마우스 이벤트 처리 함수(콜백 함수) 형식
onMouse(event,x,y,flags,param) -> None
• event: 마우스 이벤트 종류 . cv2. 로 시작하는 상수
• x: 마우스 이벤트가 발생한 x 좌표
• y: 마우스 이벤트가 발생한 y 좌표
• flags: 마우스 이벤트 발생 시 상태 . cv2.EVENT_ 로 시작하는 상수
• param: cv2.setMouseCallback() 함수에서 설정한 데이터
- 마우스 이벤트 처리 함수의 event 인자
- 마우스 이벤트 처리 함수의 flags 인자
- 마우스를 이용한 그리기 예제
import cv2
import sys
import numpy as np
oldx=oldy= -1
def on_mouse(event,x,y,flags,param):
global img,oldx,oldy
if event==cv2.EVENT_LBUTTONDOWN:
oldx,oldy=x,y
print('EVENT_LBUTTONDOWN: {},{}'.format(x,y))
elif event==cv2.EVENT_LBUTTONUP:
print('EVENT_LBUTTONUP: {},{}'.format(x,y))
elif event==cv2.EVENT_MOUSEMOVE:
if flags & cv2.EVENT_FLAG_LBUTTON: #flag 를 체크할때는 &를 쓰는것이 좋다
# print('EVENT_MOUSEMOVE: {},{}'.format(x,y))
#cv2.circle(img,(x,y),5,(0,0,255),-1)
cv2.line(img,(oldx,oldy),(x,y),(0,0,255),5)
cv2.imshow('image',img)
oldx,oldy=x,y
img=np.ones((480,640,3),dtype=np.uint8)*255
cv2.namedWindow('image')
cv2.imshow('image',img)
cv2.setMouseCallback('image',on_mouse)
cv2.waitKey()
- 트랙바 사용하기
- 트랙바 생성 함수
cv2.createTrackbar(trackbarName, windowName, value, count, onChange) -> None
• trackbarName : 트랙바 이름
• windowName : 트랙바를 생성할 창 이름 .
• value: 트랙바 위치 초기값
• count: 트랙바 최댓값 . 최솟값은 항상 0.
• onChange 트랙바 위치가 변경될 때마다 호출할 콜백 함수 이름
- 트랙바를 이용한 그레이스케일 레벨 표현
import cv2
import numpy as np
def on_level_changed(pos):
global img
level=pos*16
# level=np.clip(level,0,255) 무조건 0~255사이 값을 갖게됨
if level>=255:
level=255
img[:,:]=level #255보다 큰 값을 주면 0으로 바뀜
cv2.imshow('image',img)
img=np.zeros((480,640),np.uint8)
cv2.namedWindow('image')
cv2.imshow('image',img)
cv2.createTrackbar('level','image',0,16, on_level_changed) #무조건 창을 생성하고 나서 만들어야 한다
cv2.waitKey()
cv2.destroyAllWindows()
'Computer Vision > opencv(python)' 카테고리의 다른 글
[12] 기본적인 영상 처리 기법 1)영상의 밝기 조절 (0) | 2021.03.17 |
---|---|
[11] 동영상 전환 이펙트 (2) | 2021.03.16 |
[09] 5) 카메라와 동영상 처리하기 (0) | 2021.03.15 |
[08] 4) OpenCV 그리기 함수 (2) | 2021.03.13 |
[07] 3) 마스크 연산과 ROI (0) | 2021.03.13 |