opencv(十三)--边缘检测和梯度

目标
• 图像梯度,图像边界等

• 使用到的函数有:cv2.Sobel(),cv2.Schar(),cv2.Laplacian() 等


原理


梯度简单来说就是求导。OpenCV 提供了三种不同的梯度滤波器,或者说高通滤波器:Sobel,Scharr 和Laplacian。我们会意义介绍他们。Sobel,Scharr 其实就是求一阶或二阶导数。Scharr 是对Sobel(使用小的卷积核求解求解梯度角度时)的优化。Laplacian 是求二阶导数。


Canny 边缘检测

OpenCV 中的Canny 边缘检测


                                                  . 了解Canny 边缘检测的概念
                                                       学习函数cv2.Canny()

原理
Canny 边缘检测是一种非常流行的边缘检测算法,是John F.Canny 在1986 年提出的。它是一个有很多步构成的算法,我们接下来会逐步介绍。

import cv2  
import numpy as np  
cap=cv2.VideoCapture(0)  
while(1):  
  # 获取每一帧  
     ret,frame=cap.read()
    #cv2.CV_64F 输出图像的深度(数据类型),可以使用-1, 与原图像保持一致np.uint8
     laplacian=cv2.Laplacian(frame,cv2.CV_64F)
# 参数1,0 为只在x 方向求一阶导数,最大可以求2 阶导数。
     sobelx=cv2.Sobel(frame,cv2.CV_64F,1,0,ksize=7)
# 参数0,1 为只在y 方向求一阶导数,最大可以求2 阶导数。
     sobely=cv2.Sobel(frame,cv2.CV_64F,0,1,ksize=7) 
     edges = cv2.Canny(frame,50,50)
     cv2.imshow('frame',frame)  
     cv2.imshow('sobelx',sobelx)  
     cv2.imshow('sobely',sobely)
     cv2.imshow('laplacian',laplacian)
     cv2.imshow('edges',edges)
     k=cv2.waitKey(5)&0xFF  
     if  k==27:  
         break  
# 关闭窗口  
cv2.destroyAllWindows() 


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值