使用OpenCV-python3实现滑动条更新图像的Canny边缘检测功能
importcv2 frommatplotlibimportpyplotasplt importnumpyasnp img=cv2.imread('39.jpg')#加载图片 cv2.namedWindow('Cannyedgedetect')#设置窗口,cv2.WINDOW_NORMAL表示窗口大小可自动调节 cv2.namedWindow('OriginalImage',cv2.WINDOW_NORMAL) cv2.namedWindow('CannyedgeImage',cv2.WINDOW_NORMAL) defnothing(x):#回调函数 pass #创建两个滑动条,分别控制minVal(最小阈值)、maxVal(最大阈值). #minVal:滑动条名称;'Cannyedgedetect':窗口名;60:滑动条默认滑动位置;300:最大值;nothing:回调函数 cv2.createTrackbar('minVal','Cannyedgedetect',60,300,nothing) cv2.createTrackbar('maxVal','Cannyedgedetect',100,400,nothing) while(1): #获得滑动条所在的位置 #cv2.getTrackbarPos(滑动条名称,窗口名); minVal=cv2.getTrackbarPos('minVal','Cannyedgedetect') maxVal=cv2.getTrackbarPos('maxVal','Cannyedgedetect') #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('OriginalImage',img)#原图 cv2.imshow('CannyedgeImage',edgeImage)#Canny检测后的图 k=cv2.waitKey(1) ifk==ord('w')&0xFF:#按w退出 break cv2.destroyAllWindows()#销毁窗口
效果图如下。
总结
以上所述是小编给大家介绍的使用OpenCV-python3实现滑动条更新图像的Canny边缘检测功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。