文章目录
前言
opencv中的边缘检测和轮廓提取都是图像识别的重要部分
提示:以下是本篇文章正文内容,下面案例可供参考
一、边缘检测
Canny边缘检测算子是一个多级边缘检测算法,Canny的目标是找到一个最优的边缘检测算法,其评价标准为:低错误率、高定位性、最小响应。
Canny边缘检测步骤
Canny函数
Python:
edges = cv.Canny( image, threshold1, threshold2[, edges[, apertureSize[, L2gradient]]] )
image 源图像,需是单通道8位图像
edges 输出的边缘图像,需和源图像具有一样的大小和类型
threshold1 第一个滞后性阀值,double
threshold2 第二个滞后性阀值,double
apertureSize 应用Sobel算子孔径大小,默认值:3
L2gradient a flag, indicating whether a more accurate L 2 norm =(dI/dx) 2 +(dI/dy) 2 − − − − − − − − − − − − − − − − √ should be used to calculate the image gradient magnitude ( L2gradient=true ), or whether the default L 1 norm =|dI/dx|+|dI/dy| is enough ( L2gradient=false ).
import cv2 as cv
import numpy as np
def edge_demo(image):
blurred = cv.GaussianBlur(image, (3, 3), 0) # 高斯模糊
gray = cv.cvtColor(blurred,cv.COLOR_BGR2GRAY) # 灰路图像
xgrad = cv.Sobel(gray, cv.CV_16SC1, 1, 0) # xGrodient
ygrad = cv.Sobel(gray, cv.CV_16SC1, 0, 1) # yGrodient
edge_output = cv.Canny(xgrad, ygrad, 100, 150) # edge
cv.imshow("Canny Ed