OpenCV의 MouseCallback으로 마우스 클릭으로 연속해서 Drawing 해서 이미지를 생성하는 예제

입니다.  종료하고자 할 경우 Eac Key를 입력하면 되며, 그 전까지는 OpenCV는 계속 유지됩니다.

 

[함수설명]

     cv2.setMouseCallback(windowname, callback, param=None)

             Paramaters : windowname : windowName

                              callback : callback 함수에는 (eventm x, y, flag, param) 이 전달됩니다.

                              param : callback함수에 전달돠는 data

 

OpenCV의 MouseCallback 으로 이미지 그리기 예제

 

# OpenCV MouseCallback
import cv2
import numpy as np

drawing = False # True is Mouse Click
ix, iy = -1, -1

# Mouse Callback
def draw_circle(event, x, y, flags, param):
     global ix, iy, drawing, mode

     if event == cv2.EVENT_LBUTTONDOWN:
          drawing = True
          ix, iy = x, y

     if event == cv2.EVENT_MOUSEMOVE:
         if drawing == True:
            cv2.circle(img, (x, y), 5, (0, 255, 0), -1)

         elif event == cv2.EVENT_LBUTTONUP:
              drawing = False
              cv2.circle(img, (x, y), 5, (0, 255, 0), -1)

# black Area Create
img = np.zeros((512, 512, 3), np.uint8)
cv2.namedWindow('image')
cv2.setMouseCallback('image', draw_circle)

while(1):
     cv2.imshow('image', img)
     k = cv2.waitKey(1) & 0xFF

     if k == 27: # Esc Key
     break

cv2.destroyAllWindows()

# image Save
image_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imwrite('C:/Users/sunan/PycharmProjects/NewPJ3.7/OenCV/IMAGE/test_gray.jpg', image_gray)

 

실행 결과

 

OpenCV 실행후 마우스로 직접 그린 이미지

+ Recent posts