마우스로 연속적으로 이미지에 점 찍기
2019, Oct 27
- 이번 글은 use case로 마우스로 연속적으로 이미지에 점을 찍는 방법입니다.
- 아래 기능은 이미지에서 마우스를 누른 채로 점을 찍으면 점을 이미지에 그리고 좌표를 출력합니다.
import cv2
import numpy as np
# 마우스 콜백 함수: 연속적인 원을 그리기 위한 콜백 함수
def DrawConnectedCircle(event, x, y, flags, param):
global drawing
# 마우스 왼쪽 버튼이 눌리면 드로윙을 시작함
if event == cv2.EVENT_LBUTTONDOWN:
drawing = True
cv2.circle(img,(x,y),2,(0,0,255),-1)
print(x, y)
# 마우스가 왼쪽 버튼으로 눌린 상태에서 마우스 포인트를 움직이면
# 움직인 자취를 따라서 마우스의 점들이 그려짐
elif event == cv2.EVENT_MOUSEMOVE:
if drawing == True:
cv2.circle(img,(x,y),2,(0,0,255),-1)
print(x, y)
# 마우스 왼쪽 버튼을 떼면 드로윙을 종료함
elif event == cv2.EVENT_LBUTTONUP:
drawing = False
drawing = False # 마우스 왼쪽 버튼이 눌러지면 그리기 시작
img = np.zeros((512, 512, 3), np.uint8) + 255
cv2.namedWindow('image')
cv2.setMouseCallback('image', DrawConnectedCircle)
while(1):
cv2.imshow('image',img)
k = cv2.waitKey(1) & 0xFF
if k == 27:
break
cv2.destroyAllWindows()