11.opencv图形(4)-高级用法

灰太狼 2024-04-07 12:24 108阅读 0赞
  1. import cv2
  2. import numpy as np
  3. # 当鼠标按下时变为 True
  4. drawing=False
  5. # 如果 mode 为 true 绘制矩形。按下'm' 变成绘制曲线。
  6. mode=True
  7. ix,iy=-1,-1
  8. # 创建回调函数
  9. def draw_circle(event,x,y,flags,param):
  10. global ix,iy,drawing,mode
  11. # 当按下左键是返回起始位置坐标
  12. if event==cv2.EVENT_LBUTTONDOWN:
  13. drawing=True
  14. ix,iy=x,y
  15. # 当鼠标左键按下并移动是绘制图形。event 可以查看移动,flag 查看是否按下
  16. elif event==cv2.EVENT_MOUSEMOVE and flags==cv2.EVENT_FLAG_LBUTTON:
  17. if drawing==True:
  18. if mode==True:
  19. # 绘制矩阵
  20. cv2.rectangle(img,(ix,iy),(x,y),(0,255,0),-1)
  21. # 绘制圆圈,小圆点连在一起就成了线,3 代表了笔画的粗细
  22. # cv2.circle(img,(x,y),3,(0,0,255),-1)
  23. # 起始点为圆心,起点到终点为半径的
  24. # r=int(np.sqrt((x-ix)**2+(y-iy)**2))
  25. # cv2.circle(img,(x,y),r,(0,0,255),-1)
  26. # 当鼠标松开停止绘画。
  27. elif event==cv2.EVENT_LBUTTONUP:
  28. drawing==False
  29. # if mode==True:
  30. # cv2.rectangle(img,(ix,iy),(x,y),(0,255,0),-1)
  31. # else:
  32. # cv2.circle(img,(x,y),5,(0,0,255),-1)
  33. img=np.zeros((512,512,3),np.uint8)
  34. cv2.namedWindow('image')
  35. cv2.setMouseCallback('image',draw_circle)
  36. while(1):
  37. cv2.imshow('image',img)
  38. k=cv2.waitKey(1)&0xFF
  39. if k==ord('m'):
  40. mode=not mode
  41. elif k==27:
  42. break

发表评论

表情:
评论列表 (有 0 条评论,108人围观)

还没有评论,来说两句吧...

相关阅读

    相关 TypeScript高级

    typescript高级用法 引言 作为一门强大的静态类型检查工具,如今在许多中大型应用程序以及流行的JS库中均能看到TypeScript的身影。JS作为一门弱类型语言,

    相关 git 高级

    从另一个分支中拉取文件到当前分支 你的项目中有很多分支,你在A分支上开发,想获取B分支上的一个文件,把这个文件存到A分支上,使用命令: git checkout