Python+OpenCV 图像边缘检测四种实现方法

 更新时间:2021年11月26日 09:07:12   投稿:newname  
本文主要介绍了通过OpenCV中Sobel算子、Schaar算子、Laplacian算子以及Canny分别实现图像边缘检测并总结了四者的优缺点,感兴趣的同学可以参考一下
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
# 设置兼容中文
plt.rcParams['font.family'] = ['sans-serif']
plt.rcParams['font.sans-serif'] = ['SimHei']
D:\Anaconda\AZWZ\lib\site-packages\numpy\_distributor_init.py:30: UserWarning: loaded more than 1 DLL from .libs:
D:\Anaconda\AZWZ\lib\site-packages\numpy\.libs\libopenblas.NOIJJG62EMASZI6NYURL6JBKM4EVBGM7.gfortran-win_amd64.dll
D:\Anaconda\AZWZ\lib\site-packages\numpy\.libs\libopenblas.WCDJNK7YVMPZQ2ME2ZZHJJRJ3JIKNDB7.gfortran-win_amd64.dll
  warnings.warn("loaded more than 1 DLL from .libs:\n%s" %
horse = cv.imread('img/horse.jpg',0)
plt.imshow(horse,cmap=plt.cm.gray)
plt.imshow(horse,cmap=plt.cm.gray)

1.Sobel算子

# 1,0 代表沿x方向做sobel算子
x = cv.Sobel(horse,cv.CV_16S,1,0)
# 0,1 代表沿y方向做sobel算子
y = cv.Sobel(horse,cv.CV_16S,0,1)
# 格式转换
absx = cv.convertScaleAbs(x)
absy = cv.convertScaleAbs(y)
# 边缘检测结果
res = cv.addWeighted(absx,0.5,absy,0.5,0)
plt.figure(figsize=(20,20))
plt.subplot(1,2,1)
m1 = plt.imshow(horse,cmap=plt.cm.gray)
plt.title("原图")
plt.subplot(1,2,2)
m2 = plt.imshow(res,cmap=plt.cm.gray)
plt.title("Sobel算子边缘检测")
Text(0.5, 1.0, 'Sobel算子边缘检测')

2.Schaar算子(更能体现细节)

# 1,0 代表沿x方向做sobel算子
x = cv.Sobel(horse,cv.CV_16S,1,0,ksize=-1)
# 0,1 代表沿y方向做sobel算子
y = cv.Sobel(horse,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.figure(figsize=(20,20))
plt.subplot(1,2,1)
m1 = plt.imshow(horse,cmap=plt.cm.gray)
plt.title("原图")
plt.subplot(1,2,2)
m2 = plt.imshow(res,cmap=plt.cm.gray)
plt.title("Schaar算子边缘检测")
Text(0.5, 1.0, 'Schaar算子边缘检测')

3.Laplacian算子(基于零穿越的,二阶导数的0值点)

res = cv.Laplacian(horse,cv.CV_16S)
res = cv.convertScaleAbs(res)
plt.figure(figsize=(20,20))
plt.subplot(1,2,1)
m1 = plt.imshow(horse,cmap=plt.cm.gray)
plt.title("原图")
plt.subplot(1,2,2)
m2 = plt.imshow(res,cmap=plt.cm.gray)
plt.title("Laplacian算子边缘检测")
Text(0.5, 1.0, 'Laplacian算子边缘检测')

4.Canny边缘检测(被认为是最优的边缘检测算法)

res = cv.Canny(horse,0,100)
# res = cv.convertScaleAbs(res) Canny边缘检测是一种二值检测,不需要转换格式这一个步骤
plt.figure(figsize=(20,20))
plt.subplot(1,2,1)
m1 = plt.imshow(horse,cmap=plt.cm.gray)
plt.title("原图")
plt.subplot(1,2,2)
m2 = plt.imshow(res,cmap=plt.cm.gray)
plt.title("Canny边缘检测")
Text(0.5, 1.0, 'Canny边缘检测')

总结

以上就是Python+OpenCV 图像边缘检测四种实现方法的详细内容,更多关于Python OpenCV图像边缘检测的资料请关注脚本之家其它相关文章!

相关文章

  • Python解析excel文件存入sqlite数据库的方法

    Python解析excel文件存入sqlite数据库的方法

    最近工作中遇到一个需求,需要使用Python解析excel文件并存入sqlite,本文就实现的过程做个总结分享给大家,文中包括数据库设计、建立数据库、Python解析excel文件、Python读取文件名并解析和将解析的数据存储入库,有需要的朋友们下面来一起学习学习吧。
    2016-11-11
  • Python测试WebService接口的实现示例

    Python测试WebService接口的实现示例

    webService接口是走soap协议通过http传输,请求报文和返回报文都是xml格式的,本文主要介绍了Python测试WebService接口,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • Python去除字符串中某个字符的多种实现方法

    Python去除字符串中某个字符的多种实现方法

    这篇文章主要介绍了Python去除字符串中某个字符的多种实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • Python生成词云的实现代码

    Python生成词云的实现代码

    这篇文章主要介绍了Python生成词云,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • Python自然语言处理之切分算法详解

    Python自然语言处理之切分算法详解

    这篇文章主要介绍了Python自然语言处理之切分算法详解,文中有非常详细的代码示例,对正在学习python的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04
  • 使用python list 查找所有匹配元素的位置实例

    使用python list 查找所有匹配元素的位置实例

    今天小编就为大家分享一篇使用python list 查找所有匹配元素的位置实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • 使用Python计算几何形状的表面积与体积

    使用Python计算几何形状的表面积与体积

    这篇文章主要给大家介绍了关于使用Python计算几何形状的表面积与体积的相关资料,Python可以使用不同的库来进行几何图形的面积计算,比如math、numpy、scipy、sympy等,文中给出了详细的实例代码,需要的朋友可以参考下
    2023-06-06
  • Python判断文件和字符串编码类型的实例

    Python判断文件和字符串编码类型的实例

    下面小编就为大家分享一篇Python判断文件和字符串编码类型的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12
  • Python编程基础之构造方法和析构方法详解

    Python编程基础之构造方法和析构方法详解

    这篇文章主要为大家详细介绍了Python的构造方法和析构方法,使用Python编程基础,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • python 监控logcat关键字功能

    python 监控logcat关键字功能

    这篇文章主要介绍了python 监控logcat关键字功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09

最新评论