最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

需求

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

實現(xiàn)思想

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

實現(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

實驗結(jié)果

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

相關(guān)文章

最新評論

浙江省| 景洪市| 阜平县| 和龙市| 光泽县| 宁陕县| 武功县| 阳山县| 寿光市| 冕宁县| 达日县| 鄂托克旗| 大竹县| 宣城市| 金川县| 凤山县| 万山特区| 鄯善县| 南郑县| 商南县| 龙口市| 沙湾县| 苗栗县| 囊谦县| 芜湖县| 明光市| 额尔古纳市| 靖安县| 桦甸市| 荃湾区| 蓬溪县| 河南省| 汤原县| 广河县| 乐安县| 锦屏县| 普宁市| 孟州市| 黄冈市| 贺兰县| 旅游|