0
点赞
收藏
分享

微信扫一扫

opencv图像处理基础操作之边缘检测

概述

边缘检测是利用图像中边缘像素值会发生剧烈变化来进行检测的,主要用于分割图像、提取特征等多个方面。

opencv中常用的算法有Canny边缘检测算法、Sobel算子、Laplacian算子、Scharr算子、Roberts算子、prewitt算子。这几种算法各有优劣,使用的场景和需求也相对不同。其中Canny边缘检测算法是最常用的一种算法,具有较好的性能和效果,通常被用作默认的边缘检测算法。


原理

Canny边缘检测算法的原理是:

  1. 通过高斯模糊减少噪声干扰
  2. 然后计算图像中每个像素的梯度和方向,以确定边缘的位置和方向
  3. 使用NMS(非极大值抑制)方法,将梯度方向垂直的像素进行抑制,从而得到比较细化的边缘
  4. 并使用双阈值进行处理,将低于低阈值的像素标记为弱边缘,将介于高低阈值间的像素标记为中间边缘,将高于高阈值的像素标记为强边缘
  5. 使用连接算法将中间边缘连接到强边缘上,从而实现边缘检测

例程

import cv2 as cv


def canny():
img = cv.imread("input.jpg")
# 第二个参数代表低阈值 第三个参数代表高阈值,试着调整这两个阈值,看看边缘检测效果吧!
canny_img = cv.Canny(img, 50, 210)
cv.imshow("source", img)
cv.imshow("canny", canny_img)
cv.waitKey(0)

if __name__ == '__main__':
print_hi('PyCharm')
canny()

效果

(我们可以通过调整阈值来达到不同的效果,自己动手试试吧~)

opencv图像处理基础操作之边缘检测_边缘连接

opencv图像处理基础操作之边缘检测_opencv_02

(图片仅学习使用,如有侵权,欢迎硬刚~)

举报

相关推荐

0 条评论