TShopping

 找回密碼
 註冊
搜索
查看: 1093|回復: 0
打印 上一主題 下一主題

[教學] OpenCV Trackbar的動作偵測

[複製鏈接]
跳轉到指定樓層
1#
發表於 2021-4-26 16:47:47 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
 
Push to Facebook
原始碼
  1. import cv2
  2. import  numpy as np
  3. drawing=False
  4. mode=True
  5. ix,iy=-1,-1
  6. def nothing(x):
  7.     pass
  8. def draw_circle(event,x,y,flags,param):
  9.     s=0
  10.     r=cv2.getTrackbarPos('R','image')
  11.     g=cv2.getTrackbarPos('G','image')
  12.     b=cv2.getTrackbarPos('B','image')
  13.     color=(b,g,r)
  14.     if s==1:
  15.         color=(255,255,255)
  16.     s=cv2.getTrackbarPos('eraser','image')
  17.     thin=cv2.getTrackbarPos('thin','image')
  18.     global  ix,iy,drawing,mode
  19.     if event==cv2.EVENT_LBUTTONDOWN:
  20.         drawing=True
  21.         ix,iy=x,y
  22.     elif event==cv2.EVENT_MOUSEMOVE and flags==cv2.EVENT_FLAG_LBUTTON:
  23.         if drawing==True:
  24.             if mode == True:
  25.                 cv2.rectangle(img,(ix,iy),(x,y),color,-1)
  26.             else:
  27.                 cv2.circle(img,(x,y),thin,color,-1)
  28.     elif event==cv2.EVENT_LBUTTONUP:
  29.         drawing==False

  30. img=np.zeros((440,440,3),np.uint8)
  31. img[:]=255
  32. cv2.namedWindow('image')
  33. cv2.createTrackbar('R','image',0,255,nothing)
  34. cv2.createTrackbar('G','image',0,255,nothing)
  35. cv2.createTrackbar('B','image',0,255,nothing)
  36. cv2.createTrackbar('eraser','image',0,1,nothing)
  37. cv2.createTrackbar('thin','image',1,50,nothing)
  38. cv2.setMouseCallback('image',draw_circle)
  39. while True:
  40.     cv2.imshow('image',img)
  41.     k=cv2.waitKey()
  42.     if k==ord('m'):
  43.         mode=not mode
  44.     elif k==27:
  45.         break
複製代碼
• 視窗建立後會不斷的做訊息傳遞,所以Trackbar若改為nothing的函數,代表不做任何事情。
• setMouseCallback( )代表滑鼠相關的訊息偵測,呼叫draw_circle函數。
  1. cv2.createTrackbar('R','image',0,255,nothing)
  2. cv2.createTrackbar('G','image',0,255,nothing)
  3. cv2.createTrackbar('B','image',0,255,nothing)
  4. cv2.createTrackbar('eraser','image',0,1,nothing)
  5. cv2.createTrackbar('thin','image',1,50,nothing)
  6. cv2.setMouseCallback('image',draw_circle)
複製代碼


演示圖


 

臉書網友討論
*滑块验证:
您需要登錄後才可以回帖 登錄 | 註冊 |

本版積分規則



Archiver|手機版|小黑屋|免責聲明|TShopping

GMT+8, 2024-4-27 06:12 , Processed in 0.059866 second(s), 25 queries .

本論壇言論純屬發表者個人意見,與 TShopping綜合論壇 立場無關 如有意見侵犯了您的權益 請寫信聯絡我們。

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表