首页 > python教程

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

时间:2021-01-14 python教程 查看: 722

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,就会使用方程,

否则 False ,使用方程:

其中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边缘检测功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对python博客网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

展开全文
上一篇:python3中pip3安装出错,找不到SSL的解决方式
下一篇:python调用c++返回带成员指针的类指针实例
输入字:
相关知识
Python 实现图片色彩转换案例

我们在看动漫、影视作品中,当人物在回忆过程中,体现出来的画面一般都是黑白或者褐色的。本文将提供将图片色彩转为黑白或者褐色风格的案例详解,感兴趣的小伙伴可以了解一下。

python初学定义函数

这篇文章主要为大家介绍了python的定义函数,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助,希望能够给你带来帮助

图文详解Python如何导入自己编写的py文件

有时候自己写了一个py文件,想要把它导入到另一个py文件里面,所以下面这篇文章主要给大家介绍了关于Python如何导入自己编写的py文件的相关资料,需要的朋友可以参考下

python二分法查找实例代码

二分算法是一种效率比较高的查找算法,其输入的是一个有序的元素列表,如果查找元素包含在列表中,二分查找返回其位置,否则返回NONE,下面这篇文章主要给大家介绍了关于python二分法查找的相关资料,需要的朋友可以参考下