opencv画框,

  opencv画框,

  OpenCV提供了许多简单的语句来实现复杂的功能。根据颜色和鼠标交互的基本语句,我们可以构建一个简单的画板。虽然简单,但是做框架有很多步骤。

  如果有兴趣,可以按照我的步骤来写,或者直接复制通用程序中的代码来运行。

  相关学习推荐:python视频教程

  一、功能

  明确画板的功能,方便后续编程。

  用途:可调整颜色、绘图区域和鼠标输入。

  二、框架搭建

  有两个主要步骤:

  第一步:颜色选择可以通过使用OpenCV的滑动条语句cv.createTrackbar来设置。Cv.createTrackbar有五个参数设置,分别是(Trackbar名称、目标窗口名称、起始值——也是默认值、最大值和回调函数)。

  #创建画布

  img=np.zeros((300,512,3),np.uint8)

  #命名画布3354需要提供给Trackbar

  cv.namedWindow(“图像”)

  #用RGB创建Trackbar,return函数什么都不用做。

  cv.createTrackbar(R , image ,0,255,nothing)

  cv.createTrackbar(G , image ,0,255,nothing)

  cv.createTrackbar(B , image ,0,255,nothing)

  #因为OpenCv中没有按钮功能,所以开关用0/1表示。

  switch=0:OFFn1:ON

  cv.createTrackbar(开关,图像,0,1,无)

  #回调函数,什么都不用做

  什么都不定义(x):

  通过第二步:捕捉鼠标动作的状态,并根据鼠标动作,可以在绘图区绘制图形。在python中可以通过使用语句* events=[I for I in dir(CV if event in I]*来查看常见的鼠标操作语句。

  #设置是否开始绘画的开关。

  绘图=假

  #定义绘图功能

  定义绘制(事件,x,y,标志,参数):

  #使用drawing开关作为全局变量,以便它的值可以在每次操作后更改。

  全局绘图

  #使用函数cv。EVENT_LBUTTONDOWN,如果按下鼠标左键,画一个圆,画图为真。

  如果事件==cv。EVENT_LBUTTONDOWN:

  cv.circle(img,(x,y),3,(g,b,r),-1)

  绘图=真实

  #如果鼠标移动,请执行以下操作

  elif事件==cv。事件_鼠标移动:

  #如果画图是真的,开始画圆

  如果绘图==True:

  cv.circle(img,(x,y),3,(g,b,r),-1)

  #如果抬起鼠标左键,绘制最后一个圆,并将drawing设置为False,则绘制将停止。

  elif事件==cv。EVENT_LBUTTONUP:

  cv.circle(img,(x,y),3,(g,b,r),-1)

  绘画=假三、主函数

  主要功能是整合以上两部分。

  而(1):

  #显示画布

  cv.imshow(image ,img)

  #设置结束按钮。为了确保在非ASCII编码的32/64位系统或键盘上正常工作,使用0xFF取低八位。

  k=cv.waitKey(1)0xFF

  #如果k是27,即键盘上Esc的ASCII码序列号,退出画板

  如果k==27:

  破裂

  #获取每个跟踪条中的值

  r=cv.getTrackbarPos(R , image )

  g=cv.getTrackbarPos(G , image )

  b=cv.getTrackbarPos(B , image )

  s=cv.getTrackbarPos(开关,“图像”)

  #如果开关为0,清空画板,禁止画图,如果为1,允许。

  如果s==0:

  img[:]=0

  else:

  cv.setMouseCallback(image ,draw)

  #最后别忘了破坏窗户

  四、运行效果

  五、总结

  从这个简单的画板中,我们主要学习使用鼠标函数cv.setMouseCallback,以及两个基本的OpenCV函数cv.createTrackbar,并探究其中的细节,找出需要注意的地方。

  六、总程序

  将cv2作为cv导入

  将numpy作为np导入

  什么都不定义(x):

  及格

  img=np.zeros((300,512,3),np.uint8)

  cv.namedWindow(“图像”)

  cv.createTrackbar(R , image ,0,255,nothing)

  cv.createTrackbar(G , image ,0,255,nothing)

  cv.createTrackbar(B , image ,0,255,nothing)

  switch=0:OFFn1:ON

  cv.createTrackbar(开关,图像,0,1,无)

  绘图=假

  定义绘制(事件,x,y,标志,参数):

  全局绘图

  如果事件==cv。EVENT_LBUTTONDOWN:

  cv.circle(img,(x,y),3,(g,b,r),-1)

  绘图=真实

  elif事件==cv。事件_鼠标移动:

  如果绘图==True:

  cv.circle(img,(x,y),3,(g,b,r),-1)

  elif事件==cv。EVENT_LBUTTONUP:

  cv.circle(img,(x,y),3,(g,b,r),-1)

  绘图=假

  而(1):

  cv.imshow(image ,img)

  k=cv.waitKey(1)0xFF

  如果k==27:

  破裂

  r=cv.getTrackbarPos(R , image )

  g=cv.getTrackbarPos(G , image )

  b=cv.getTrackbarPos(B , image )

  s=cv.getTrackbarPos(开关,"图像")

  如果s==0:

  img[:]=0

  else:

  cv.setMouseCallback(image ,draw)

  cv.destroyAllWindows()以上就是基于中文版实现简单画板功能详解的详细内容,更多请关注盛行信息技术软件开发工作室其它相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • opencv图像识别数字,opencv 识别
  • opencv图像识别数字,opencv 识别,如何基于opencv实现简单的数字识别
  • opencv图像的旋转角度计算,opencv图像仿射变换
  • opencv图像的旋转角度计算,opencv图像仿射变换,OpenCV图像几何变换之透视变换
  • opencv图像的旋转角度计算,opencv 旋转任意角度
  • opencv图像的旋转角度计算,opencv 旋转任意角度,opencv图片的任意角度旋转实现示例
  • opencv图像处理函数,opencv图像轮廓合并
  • opencv图像处理函数,opencv图像轮廓合并,OpenCV图像处理之七种常用图像几何变换
  • opencv双线性插值函数,opencv 图像插值
  • LBPH人脸识别,基于opencv的人脸识别技术
  • LBPH人脸识别,基于opencv的人脸识别技术,Opencv LBPH人脸识别算法详解
  • ,,OpenCV黑帽运算(BLACKHAT)的使用
  • opencv双线性插值函数,opencv 图像插值,C++ OpenCV实现图像双三次插值算法详解
  • ,,C语言 OpenCV实现柱面投影
  • ,,C++ Opencv imfill孔洞填充函数的实现思路与代码
  • 留言与评论(共有 条评论)
       
    验证码: