使用OpenCV-python3实现滑动条更新图像的Canny边缘检测功能


Posted in Python onDecember 12, 2019
import cv2
from matplotlib import pyplot as plt
import numpy as np
img= cv2.imread('39.jpg')#加载图片
cv2.namedWindow('Canny edge detect')#设置窗口,cv2.WINDOW_NORMAL表示窗口大小可自动调节
cv2.namedWindow('Original Image',cv2.WINDOW_NORMAL)
cv2.namedWindow('Canny edgeImage',cv2.WINDOW_NORMAL)
def nothing(x):#回调函数
  pass
#创建两个滑动条,分别控制minVal(最小阈值)、maxVal(最大阈值).
# minVal:滑动条名称; 'Canny edge detect':窗口名; 60:滑动条默认滑动位置; 300:最大值 ; nothing:回调函数
cv2.createTrackbar('minVal','Canny edge detect',60,300,nothing)
cv2.createTrackbar('maxVal','Canny edge detect',100,400,nothing)
while(1):
  #获得滑动条所在的位置
  #cv2.getTrackbarPos(滑动条名称,窗口名);
  minVal = cv2.getTrackbarPos('minVal','Canny edge detect')
  maxVal = cv2.getTrackbarPos('maxVal','Canny edge detect')
  #Canny边缘检测
  #cv2.Canny函数参数解析:
  # img:原图像名
  # minVal:最小梯度
  # maxVal:最大梯度
  # 5 :5*5大小的高斯滤波器(卷积核),用来消除噪声影响
  # L2gradient :求图像梯度,从而进行去除非边界上的点(非极大值抑制)
  edgeImage = cv2.Canny(img,minVal,maxVal,5,L2gradient=True)

L2gradient,它可以用来设定 求梯度大小的方程。如果设为 True,就会使用方程,

使用OpenCV-python3实现滑动条更新图像的Canny边缘检测功能

否则 False ,使用方程:

使用OpenCV-python3实现滑动条更新图像的Canny边缘检测功能

其中Gx,Gy为使用 Sobel 算子的计算水平方向和竖直方向的一阶导数。

#显示图片
  cv2.imshow('Original Image',img) #原图
  cv2.imshow('Canny edgeImage',edgeImage) # Canny检测后的图

  k = cv2.waitKey(1)
  if k ==ord('w')& 0xFF: # 按 w 退出
    break
cv2.destroyAllWindows()#销毁窗口

效果图如下。

使用OpenCV-python3实现滑动条更新图像的Canny边缘检测功能

总结

以上所述是小编给大家介绍的使用OpenCV-python3实现滑动条更新图像的Canny边缘检测功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
Python做文本按行去重的实现方法
Oct 19 Python
Python数据结构与算法之字典树实现方法示例
Dec 13 Python
使用Python制作自动推送微信消息提醒的备忘录功能
Sep 06 Python
numpy给array增加维度np.newaxis的实例
Nov 01 Python
详解Python装饰器
Mar 25 Python
python区块及区块链的开发详解
Jul 03 Python
python 字典有序并写入json文件过程解析
Sep 30 Python
TensorFlow绘制loss/accuracy曲线的实例
Jan 21 Python
解决Python 异常TypeError: cannot concatenate 'str' and 'int' objects
Apr 08 Python
python opencv把一张图片嵌入(叠加)到另一张图片上的实现代码
Jun 11 Python
python实现文件分片上传的接口自动化
Nov 19 Python
python 实现socket服务端并发的四种方式
Dec 14 Python
django框架使用views.py的函数对表进行增删改查内容操作详解【models.py中表的创建、views.py中函数的使用,基于对象的跨表查询】
Dec 12 #Python
python3中pip3安装出错,找不到SSL的解决方式
Dec 12 #Python
python 使用opencv 把视频分割成图片示例
Dec 12 #Python
Python2与Python3的区别点整理
Dec 12 #Python
opencv3/C++实现视频背景去除建模(BSM)
Dec 11 #Python
opencv3/C++实现视频读取、视频写入
Dec 11 #Python
django框架两个使用模板实例
Dec 11 #Python
You might like
在PHP中使用Sockets 从Usenet中获取文件
2008/01/10 PHP
php将fileterms函数返回的结果变成可读的形式
2011/04/21 PHP
php json_encode()函数返回json数据实例代码
2014/10/10 PHP
PHP内置的Math函数效率测试
2014/12/01 PHP
PHP基于Redis消息队列实现发布微博的方法
2017/05/03 PHP
tp5修改(实现即点即改)
2019/10/18 PHP
php使用pthreads v3多线程实现抓取新浪新闻信息操作示例
2020/02/21 PHP
Nigma vs AM BO3 第一场2.13
2021/03/10 DOTA
使用dynatrace-ajax跟踪JavaScript的性能
2010/04/12 Javascript
JQuery动态给table添加、删除行 改进版
2011/01/19 Javascript
js判断为空Null与字符串为空简写方法
2014/02/24 Javascript
基于jquery实现的图片在各种分辨率下未知的容器内上下左右居中
2014/05/11 Javascript
使用javascript获取页面名称
2014/12/23 Javascript
jQuery聚合函数实例
2015/05/21 Javascript
js去除浏览器默认底图的方法
2015/06/08 Javascript
详解Weex基于Vue2.0开发模板搭建
2017/03/20 Javascript
jQuery中过滤器的基本用法示例
2017/10/11 jQuery
小程序视频列表中视频的播放与停止的示例代码
2018/07/20 Javascript
如何解决日期函数new Date()浏览器兼容性问题
2019/09/11 Javascript
layui 上传插件 带预览 非自动上传功能的实例(非常实用)
2019/09/23 Javascript
[49:40]2018DOTA2亚洲邀请赛小组赛 A组加赛 TNC vs Newbee
2018/04/03 DOTA
[40:03]Liquid vs Optic 2018国际邀请赛淘汰赛BO3 第一场 8.21
2018/08/22 DOTA
Python时区设置方法与pytz查询时区教程
2013/11/27 Python
Python subprocess模块学习总结
2014/03/13 Python
python自动化测试实例解析
2014/09/28 Python
使用PDB模式调试Python程序介绍
2015/04/05 Python
Python 读取用户指令和格式化打印实现解析
2019/09/02 Python
Python2和Python3中@abstractmethod使用方法
2020/02/04 Python
详解如何在pyqt中通过OpenCV实现对窗口的透视变换
2020/09/20 Python
HTML5进度条特效
2014/12/18 HTML / CSS
计算机网络专业推荐信
2013/11/24 职场文书
学习优秀党务工作者先进事迹材料思想报告
2014/09/17 职场文书
工作失误检讨书
2015/01/26 职场文书
总结会主持词
2015/07/02 职场文书
2015年暑期社会实践报告
2015/07/13 职场文书
演讲稿之感恩老师(三篇范文)
2019/09/06 职场文书