1. 程式人生 > 程式設計 >python opencv實現簡易畫圖板

python opencv實現簡易畫圖板

python-opencv實現簡易畫圖板,供大家參考,具體內容如下

# -*- coding: utf-8 -*-
"""
Created on Sat May 19 17:34:54 2018

@author: xxx
"""

import cv2 as cv
import numpy as np


def nothing(x):
  pass

# 當滑鼠按下時變為 True
drawing = False
# 如果 mode 為 True 繪製矩形。按下 'm' 變成繪製曲線
mode = True
ix,iy = -1,-1

#建立回撥函式
def draw_circle(event,x,y,flags,param):
  r = cv.getTrackbarPos('R','image')
  g = cv.getTrackbarPos('G','image')
  b = cv.getTrackbarPos('B','image')
  color = (b,g,r)

  global ix,iy,drawing,mode
  # 當按下左鍵是返回起始位置座標
  if event == cv.EVENT_LBUTTONDOWN:
    drawing = True
    ix,iy = x,y
#    當滑鼠左鍵按下並移動是繪製圖形。event 可以檢視移動,flag 檢視是否按下
  elif event == cv.EVENT_MOUSEMOVE and flags == cv.EVENT_FLAG_LBUTTON:
    if drawing == True:
      if mode == True:
        cv.rectangle(img,(ix,iy),(x,y),color,-1)
      else:
        # 繪製圓圈,小圓點連在一起就成了線,3代表畫筆的粗細
        cv.circle(img,3,-1)
        # 下面註釋的程式碼是起始點為圓心,起點到終點為半徑
#        r = int(np.sqrt((x - ix)**2 + (y - iy)**2))
#        cv.circle(img,r,(0,255),-1)
#    當滑鼠鬆開停止繪畫
  elif event == cv.EVENT_LBUTTONUP:
      drawing == False
#      if mode == True:
#        cv.rectangle(img,255,0),-1)
#      else:
#      cv.circle(img,5,-1)

#建立一幅黑色圖形
img = np.zeros((512,512,3),np.uint8)
cv.namedWindow('image')

cv.createTrackbar('R','image',nothing)
cv.createTrackbar('G',nothing)
cv.createTrackbar('B',nothing)
cv.setMouseCallback('image',draw_circle)

while(1):
  cv.imshow('image',img)
  k = cv.waitKey(1)&0xFF
  if k == ord('m'):
    mode = not mode
  elif k==27:
    break


cv.destroyAllWindow()

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。