python 基于opencv 實現(xiàn)一個鼠標繪圖小程序
在畫布上用鼠標畫圖,可以畫圓或矩形,按m鍵在兩種模式下切換。左鍵按下時開始畫圖,移動到哪兒畫到哪兒,左鍵釋放時結(jié)束畫圖。
實現(xiàn)思想用鼠標畫圖:需要定義鼠標的回調(diào)函數(shù)mouse_event畫圓或矩形:需要定義一個畫圖的模式mode左鍵單擊、移動、釋放:需要捕獲三個不同的事件開始畫圖,結(jié)束畫圖:需要定義一個畫圖的標記位drawing
實現(xiàn)代碼import cv2 as cvimport numpy as npdrawing = False # 是否開始畫圖mode = True # True:畫矩形,F(xiàn)alse:畫圓start = (-1, -1)# 鼠標的回調(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) # 鼠標移動,畫圖 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)一個鼠標繪圖小程序的詳細內(nèi)容,更多關(guān)于python 鼠標繪圖的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!
相關(guān)文章:
1. ASP 信息提示函數(shù)并作返回或者轉(zhuǎn)向2. Python importlib動態(tài)導(dǎo)入模塊實現(xiàn)代碼3. android studio 打包自動生成版本號與日期,apk輸入路徑詳解4. 利用promise及參數(shù)解構(gòu)封裝ajax請求的方法5. 淺談python出錯時traceback的解讀6. 在Android中使用WebSocket實現(xiàn)消息通信的方法詳解7. .NET中l(wèi)ambda表達式合并問題及解決方法8. Nginx+php配置文件及原理解析9. python matplotlib:plt.scatter() 大小和顏色參數(shù)詳解10. JSP數(shù)據(jù)交互實現(xiàn)過程解析
