使用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中死锁的形成示例及死锁情况的防止
Jun 14 Python
window下eclipse安装python插件教程
Apr 24 Python
pygame游戏之旅 载入小车图片、更新窗口
Nov 20 Python
Python2.7实现多进程下开发多线程示例
May 31 Python
Django Rest framework认证组件详细用法
Jul 25 Python
python opencv鼠标事件实现画框圈定目标获取坐标信息
Apr 18 Python
Django--权限Permissions的例子
Aug 28 Python
Python:二维列表下标互换方式(矩阵转置)
Dec 02 Python
Python多线程获取返回值代码实例
Feb 17 Python
python实点云分割k-means(sklearn)详解
May 28 Python
Django model重写save方法及update踩坑详解
Jul 27 Python
Python configparser模块应用过程解析
Aug 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中将地址生成迅雷快车旋风链接的代码[测试通过]
2011/04/20 PHP
php将文本文件转换csv输出的方法
2014/12/31 PHP
PHP随手笔记整理之PHP脚本和JAVA连接mysql数据库
2015/11/25 PHP
PHP面向对象程序设计组合模式与装饰模式详解
2016/12/02 PHP
thinkphp中AJAX返回ajaxReturn()方法分析
2016/12/06 PHP
PHP实现通过二维数组键值获取一维键名操作示例
2019/10/11 PHP
微信小程序发送订阅消息的方法(php 为例)
2019/10/30 PHP
php上传图片并给图片打上透明水印的代码
2010/06/07 Javascript
js限制文本框为整数和货币的函数代码
2010/10/13 Javascript
JS命名空间的另一种实现
2013/08/09 Javascript
Redis基本知识、安装、部署、配置笔记
2015/03/05 Javascript
JS获取当前脚本文件的绝对路径
2016/03/02 Javascript
浅析Jquery操作select
2016/12/13 Javascript
详解webpack解惑:require的五种用法
2017/06/09 Javascript
JavaScript实现简单生成随机颜色的方法
2017/09/21 Javascript
详解使用webpack打包编写一个vue-toast插件
2017/11/08 Javascript
微信小程序npm引入vant-weapp的踩坑记录
2019/08/01 Javascript
微信小程序制作扭蛋机代码实例
2019/09/24 Javascript
js中实现继承的五种方法
2021/01/25 Javascript
Python的“二维”字典 (two-dimension dictionary)定义与实现方法
2016/04/27 Python
python 性能优化方法小结
2017/03/31 Python
Python基于回溯法子集树模板解决马踏棋盘问题示例
2017/09/11 Python
python中is与双等于号“==”的区别示例详解
2017/11/21 Python
python3安装crypto出错及解决方法
2019/07/30 Python
浅谈html5标签css3的常用样式
2016/10/20 HTML / CSS
安全责任书范文
2014/03/12 职场文书
村干部培训班主持词
2014/03/28 职场文书
外国人聘用意向书
2014/04/01 职场文书
技术经济专业求职信
2014/09/03 职场文书
初中教师个人工作总结
2015/02/10 职场文书
房地产销售主管岗位职责
2015/02/13 职场文书
2015年办公室主任工作总结
2015/04/09 职场文书
毕业论文致谢词
2015/05/14 职场文书
英语读书笔记
2015/07/02 职场文书
患者身份识别制度
2015/08/06 职场文书
vue-cli3.x配置全局的scss的时候报错问题及解决
2022/04/30 Vue.js