pythonマウスの描画プログラムを実現するためのopencvベース


需要
キャンバスでマウスで図を描くと、円や長方形を描くことができます。mボタンを押して2つのモードで切り替えます。左ボタンを押すと絵が始まります。どこに移動してどこに描きますか?左ボタンを放したら絵が終わります。
思想を実現する
マウスで図を描くには、マウスのコールバック関数を定義する必要があります。イベント
円または長方形を描くには、絵のパターンを定義する必要があります。
左クリック、移動、リリース:三つの異なるイベントをキャプチャする必要があります。
絵を描き始めて、絵を描き終わります。絵の位置を定義する必要があります。
コードを実現

import cv2 as cv
import numpy as np

drawing = False #       
mode = True # True:   ,False:  
start = (-1, -1)

#                 ,      。
def mouse_event(event, x, y, flags, param):
  global start, drawing, mode

  #     :    
  if event == cv.EVENT_LBUTTONDOWN:
    drawing = True
    start = (x, y)
  #     ,  
  elif event == cv.EVENT_MOUSEMOVE:
    if drawing:
      if mode:
        cv.rectangle(img, start, (x, y), (0, 255, 0), -1)
      else:
        cv.circle(img, (x, y), 5, (0, 0, 255), -1)
  #     :    
  elif event == cv.EVENT_LBUTTONUP:
    drawing = False
    if mode:
      cv.rectangle(img, start, (x, y), (0, 255, 0), -1)
    else:
      cv.circle(img, (x, y), 5, (0, 0, 255), -1)


img = np.zeros((512, 512, 3), np.uint8)
cv.namedWindow('image')
cv.setMouseCallback('image', mouse_event)

while(True):
  cv.imshow('image', img)
  #   m    
  if cv.waitKey(1) == ord('m'):
    mode = not mode
  #  ESC     
  elif cv.waitKey(1) == 27:
    break
実験結果

以上はpythonがopencvに基づいて1つのマウスの図形描画の小さいプログラムの詳しい内容を実現して、更にpythonマウスの図形描画に関しての資料は私達のその他の関連している文章に注意して下さい!