python3如何使用边缘分割图像_使用OpenCV-python3实现滑动条更新图像的Canny边缘检测功能...

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边缘检测功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

时间: 2019-12-11

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值