OpenCV图像处理——边缘检测

目录

  • 原理
  • Sobel检测算子
    • 方法
    • 应用
  • Laplacian算子
  • Canny边缘检测
    • 原理

原理

OpenCV图像处理——边缘检测_第1张图片
OpenCV图像处理——边缘检测_第2张图片

Sobel检测算子

OpenCV图像处理——边缘检测_第3张图片

方法

OpenCV图像处理——边缘检测_第4张图片
OpenCV图像处理——边缘检测_第5张图片

应用

sobel_x_or_y=cv.Sobel(src,ddepth,dx,dy,dst,ksize,scale,delta,borderType)

OpenCV图像处理——边缘检测_第6张图片

import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt

img=cv.imread('./汪学长的随堂资料/4/图像操作/cat.jpg',0)
# sobel
x=cv.Sobel(img,cv.CV_16S,1,0)
y=cv.Sobel(img,cv.CV_16S,0,1)
absx=cv.convertScaleAbs(x)
absy=cv.convertScaleAbs(y)
res=cv.addWeighted(absx,0.5,absy,0.5,0)
plt.imshow(res,cmap='gray')

# scharr
x=cv.Sobel(img,cv.CV_16S,1,0,ksize=-1)
y=cv.Sobel(img,cv.CV_16S,0,1,ksize=-1)
absx=cv.convertScaleAbs(x)
absy=cv.convertScaleAbs(y)
res=cv.addWeighted(absx,0.5,absy,0.5,0)
plt.imshow(res,cmap='gray')

Laplacian算子

OpenCV图像处理——边缘检测_第7张图片

laplacian=cv.Laplacian(src,ddepth[,dst[,ksize[,scale[,delta[,borderType]]]]])

OpenCV图像处理——边缘检测_第8张图片

res=cv.Laplacian(img,cv.CV_16S)
res=cv.convertScaleAbs(res)
plt.imshow(res,cmap='gray')

Canny边缘检测

在这里插入图片描述

原理

OpenCV图像处理——边缘检测_第9张图片
OpenCV图像处理——边缘检测_第10张图片
OpenCV图像处理——边缘检测_第11张图片

canny=cv.Canny(img,threshold1,threshold2)

OpenCV图像处理——边缘检测_第12张图片

res=cv.Canny(img,0,100)
plt.imshow(res,cmap='gray')

你可能感兴趣的:(tensorflow解决cv,opencv,图像处理,人工智能)