1.前言

目的:为了总结下之前用过的经典边缘检测算法sobel和canny

2.算法opencv官方讲解

(1)sobel
算法讲解
(2)canny
算法讲解

2.opencv-python代码

**注意:**由于数据未公开,所以没有提供数据来源,只需要填写path(图像的路径)即可运行,该代码可以实现以上两种算法,并且canny算法的阈值是可以通过滑动块来设置的。代码已有详细的注释。

import cv2# original image
path =''
original_image = cv2.imread(path, 1)
cv2.imshow('original image', original_image)
cv2.waitKey()# edge detection by sobel
gray_image = cv2.cvtColor(original_image, cv2.COLOR_BGR2GRAY)  # 彩色也可以处理,但是最好是灰度图
cv2.imshow('gray_image', gray_image)
cv2.waitKey()
x = cv2.Sobel(gray_image, cv2.CV_16S, 1, 0)  # 对x求一阶导,垂直检测,一个图像左顶点才是圆点,垂直向下为x轴,水平向右为y轴
y = cv2.Sobel(gray_image, cv2.CV_16S, 0, 1)  # 对y求一阶导,水平检测
absX = cv2.convertScaleAbs(x)  # 实现将x转换为uint8类型,因为x会有正有负,转换到[0,255]
absY = cv2.convertScaleAbs(y)
cv2.imshow('absX', absX)
cv2.waitKey()
cv2.imshow('absY', absY)
cv2.waitKey()
sobel_image = cv2.addWeighted(absX, 0.5, absY, 0.5, 0)
cv2.imshow('sobel_image', sobel_image)
cv2.waitKey()# edge detection by canny with dynamic thresholds
gaussian_image = cv2.GaussianBlur(gray_image, (3, 3), 0)  # 高斯核的长宽都是的正奇数, 高斯模糊会使图像模糊,但会滤除高斯类噪点
cv2.imshow('gaussian_image', gaussian_image)
cv2.waitKey()def nothing(x):  # 每次滑动bar的时候,不需要额外的回调pass
cv2.namedWindow('canny with dynamic thresholds')  # 给窗口命名
cv2.createTrackbar('min', 'canny with dynamic thresholds', 0, 255, nothing)  # 这里第二个参数必须是当前的窗口名,范围[0,255]
cv2.createTrackbar('max', 'canny with dynamic thresholds', 0, 255, nothing)
while(1):if cv2.waitKey(1) & 0xFF == 27:  # ESC退出循环,关闭所有的窗口哦breakmaxVal = cv2.getTrackbarPos('max', 'canny with dynamic thresholds')minVal = cv2.getTrackbarPos('min', 'canny with dynamic thresholds')canny_image = cv2.Canny(gaussian_image, minVal, maxVal)  # 范围[0,25*10.2]=[0,255]cv2.imshow('canny_image', canny_image)cv2.destroyAllWindows()

sobel,canny(可滑动调节阈值)边缘检测算法opencv-python实战相关推荐

  1. python opencv 边缘检测 抠图,opencv+python用背景减去法抠图

    opencv+python用背景减去法抠图 opencv+python用背景减去法抠图 import cv2 from matplotlib import pyplot as plt import n ...

  2. Canny边缘检测算法(python 实现)

    文章目录 最优边缘准则 算法实现步骤 1. 应用高斯滤波来平滑(模糊)图像,目的是去除噪声 2. 计算梯度强度和方向 3. 应用非最大抑制技术NMS来消除边误检 4. 应用双阈值的方法来决定可能的(潜 ...

  3. 【图像处理】——Python图像分割边缘检测算法之一阶梯度算子(Roberts、Prewitt、Sobel、 Kirsch、Canny算子)

    目录 前言 一.边缘检测算法 1.一阶算子 2.二阶算子 二.一阶算子 原图像lena 1.Roberts算子 不同方向的算子模板 梯度的计算 系统代码: 自定义函数代码 结果 2.Prewitt 不 ...

  4. OpenCV+python:Canny边缘检测算法

    1,边缘处理 图像边缘信息主要集中在高频段,通常说图像锐化或检测边缘,实质就是高频滤波.我们知道微分运算是求信号的变化率,具有加强高频分量的作用. 在空域运算中来说,对图像的锐化就是计算微分.由于数字 ...

  5. Canny边缘检测算法

    1. 写在前面 最近在做边缘检测方面的一些工作,在网络上也找了很多有用的资料,感谢那些积极分享知识的先辈们,自己在理解Canny边缘检测算法的过程中也走了一些弯路,在编程实现的过程中,也遇到了一个让我 ...

  6. 【算法随记一】Canny边缘检测算法实现和优化分析。

    以前的博文大部分都写的非常详细,有很多分析过程,不过写起来确实很累人,一般一篇好的文章要整理个三四天,但是,时间越来越紧张,后续的一些算法可能就以随记的方式,把实现过程的一些比较容易出错和有价值的细节 ...

  7. canny边缘检测算法 opencv_OpenCV-Python Canny边缘检测 | 十九

    目标 在本章中,我们将学习 Canny边缘检测的概念 OpenCV函数: cv.Canny() 理论 Canny Edge Detection是一种流行的边缘检测算法.它由John F. Canny发 ...

  8. python canny检测_【数字图像分析】基于Python实现 Canny Edge Detection(Canny 边缘检测算法)...

    Canny 边缘检测算法 Steps: 高斯滤波平滑 计算梯度大小和方向 非极大值抑制 双阈值检测和连接 代码结构: Canny Edge Detection |Gaussian_Smoothing ...

  9. Canny边缘检测算法原理及其VC实现详解(一)

    原文地址:http://blog.csdn.net/likezhaobin/article/details/6892176 图象的边缘是指图象局部区域亮度变化显著的部分,该区域的灰度剖面一般可以看作是 ...

最新文章

  1. 到底什么是AI0T?现在不少头部企业都在打造AIOT概念,今天我们就梳理一下AIOT产业都包含了哪些,启明云端在AIOT中,能提供哪些解决方案?
  2. USACO 3.1 Score Inflation(完全背包 模版)
  3. c程序设计语言选修难吗,欢迎大家选修C语言程序设计这门课,本帖解释一下一些常见的问题...
  4. rgb sw 线主板接口在哪_光有RGB还不够,显卡竖装才更显高大上,酷冷TD500机箱装机...
  5. 飞磨科技php,昆虫飞行信息系统(飞行磨)
  6. 元气骑士机器人旁边建筑_元气骑士机器人的一些经验
  7. JSchException: Algorithm negotiation fail
  8. Boost serialization
  9. 免费开源的几款Web服务器软件简介
  10. 抖音只能上下滑动吗_抖音只能上下滑动吗_实现仿抖音视频滑动的两个方案
  11. 阿里云 mysql 100_MySQL服务进程占用系统CPU达100%-阿里云开发者社区
  12. 一种通过加速粒子进入其它宇宙的机器
  13. 1-乙基-3-甲基咪唑四氟硼酸盐/[C2MIm]BF4/cas:143314-16-3/分子量:197.97/离子液体
  14. f烽火ExMobi,移动应用平台的互联网思维
  15. 新加坡国际学校IB成绩亮眼,全球40%满分考生来自新加坡
  16. 学ui和python哪个好找工作_学it好不好找工作?过来人告诉你
  17. 时间复杂度O(n)什么意思
  18. 泰拉瑞亚修改器服务器能用吗,泰拉瑞亚修改器使用方法详细讲解
  19. SQL数据库中的一列数据按照英文字母先后顺序排列,怎么可以做到?
  20. Linux卸载安装bind,Bind编译安装详解

热门文章

  1. c语言中文网_在C语言中使用中文字符
  2. memcached php 测试,php一致性hash性能测试(flexihash/memcache/memcached)
  3. 蓝桥杯——阿尔法乘积
  4. 洛谷P1216 [USACO1.5][IOI1994]数字三角形 Number Triangles
  5. Java 1.1.7 String API (!!!)
  6. Markdown中的特殊符号
  7. 基于结构的虚拟筛选模型 gnina 从源码编译
  8. c/c++教程 - 2.2 引用的使用方法,引用做函数参数,引用做返回值,引用的本质,常量引用
  9. J2EE的13种核心技术简介
  10. java.lang.InstantiationException: