[OpenCv-python 기초 : 마우스 클릭으로 도형 만들기
2018. 5. 30. 00:09ㆍPython-이론/python-opencv
마우스 클릭으로 도형만들기
import cv2 import numpy as np from random import shuffle mode = True img = np.zeros((512, 512, 3), np.uint8) R = [i for i in range(256)] G = [i for i in range(256)] B = [i for i in range(256)] drawing = False ix = -1 iy = -1 def onMouseClick(event, x, y , flags, param): #마우스 왼쪽 버튼이 눌렸을때 if event == cv2.EVENT_LBUTTONDOWN: global ix, iy, drawing, mode drawing = True ix, iy = x, y shuffle(R), shuffle(B), shuffle(G) #색을 랜덤으로 뽑음 #마우스가 움직였을 때 elif event == cv2.EVENT_MOUSEMOVE: if drawing: if mode: cv2.circle(param, (x, y), int(abs((x -ix) + (y-iy))/2), (B[0], G[0], R[0]), -1) else: cv2.rectangle(param, (ix, iy), (x,y), (B[0], G[0], R[0]), -1) else: #=> cv2.EVENT_LBUTTONUP이 있음 #마우스왼쪽 버튼이 때졌을 때 drawing = False if mode: #처음에서 x와 y의 마우스 커서 차이의 평균으로 반지름 정함 cv2.circle(param, (x,y), int(abs((ix - x) + (iy - y)) / 2), (B[0], G[0], R[0]), -1) else: cv2.rectangle(param, (ix, iy), (x,y), (B[0], G[0], R[0]), -1) cv2.namedWindow('window', cv2.WINDOW_NORMAL) cv2.setMouseCallback('window', onMouseClick, param=img) while True: cv2.imshow('window', img) k = cv2.waitKey(1) if k == 27: break #c를 누르면 원 <-> 직사각형으로 바꿈 elif k == ord('c'): mode = not mode
'Python-이론 > python-opencv' 카테고리의 다른 글
[OpenCV-python 기초]:이미지 픽셀 조작 및 ROI(관심영역) (0) | 2018.05.30 |
---|---|
[OpenCv-python 기초 ]:trackBar 생성하기 (0) | 2018.05.30 |
[OpenCv-python 기초] :도형그리기 (0) | 2018.05.29 |
[OpenCv-python 기초] :노트북 웹캠을 이용해서 동영상을 읽고 쓰기 (6) | 2018.05.29 |
[OpenCv-python 기초] :이미지 읽고, 저장하기 (10) | 2018.05.29 |