欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python 基于opencv 實(shí)現(xiàn)一個(gè)鼠標(biāo)繪圖小程序

 更新時(shí)間:2020年12月11日 10:00:04   作者:我堅(jiān)信陽光燦爛  
這篇文章主要介紹了python 基于opencv 實(shí)現(xiàn)一個(gè)鼠標(biāo)繪圖小程序,幫助大家更好的理解和使用python的opencv庫,感興趣的朋友可以了解下

需求

在畫布上用鼠標(biāo)畫圖,可以畫圓或矩形,按m鍵在兩種模式下切換。左鍵按下時(shí)開始畫圖,移動到哪兒畫到哪兒,左鍵釋放時(shí)結(jié)束畫圖。

實(shí)現(xiàn)思想

用鼠標(biāo)畫圖:需要定義鼠標(biāo)的回調(diào)函數(shù)mouse_event
畫圓或矩形:需要定義一個(gè)畫圖的模式mode
左鍵單擊、移動、釋放:需要捕獲三個(gè)不同的事件
開始畫圖,結(jié)束畫圖:需要定義一個(gè)畫圖的標(biāo)記位drawing

實(shí)現(xiàn)代碼

import cv2 as cv
import numpy as np

drawing = False # 是否開始畫圖
mode = True # True:畫矩形,F(xiàn)alse:畫圓
start = (-1, -1)

# 鼠標(biāo)的回調(diào)函數(shù)的參數(shù)格式是固定的,不要隨意更改。
def mouse_event(event, x, y, flags, param):
  global start, drawing, mode

  # 左鍵按下:開始畫圖
  if event == cv.EVENT_LBUTTONDOWN:
    drawing = True
    start = (x, y)
  # 鼠標(biāo)移動,畫圖
  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)
  # 左鍵釋放:結(jié)束畫圖
  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

實(shí)驗(yàn)結(jié)果

以上就是python 基于opencv 實(shí)現(xiàn)一個(gè)鼠標(biāo)繪圖小程序的詳細(xì)內(nèi)容,更多關(guān)于python 鼠標(biāo)繪圖的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論