sobel,canny(可滑动调节阈值)边缘检测算法opencv-python实战
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实战相关推荐
- python opencv 边缘检测 抠图,opencv+python用背景减去法抠图
opencv+python用背景减去法抠图 opencv+python用背景减去法抠图 import cv2 from matplotlib import pyplot as plt import n ...
- Canny边缘检测算法(python 实现)
文章目录 最优边缘准则 算法实现步骤 1. 应用高斯滤波来平滑(模糊)图像,目的是去除噪声 2. 计算梯度强度和方向 3. 应用非最大抑制技术NMS来消除边误检 4. 应用双阈值的方法来决定可能的(潜 ...
- 【图像处理】——Python图像分割边缘检测算法之一阶梯度算子(Roberts、Prewitt、Sobel、 Kirsch、Canny算子)
目录 前言 一.边缘检测算法 1.一阶算子 2.二阶算子 二.一阶算子 原图像lena 1.Roberts算子 不同方向的算子模板 梯度的计算 系统代码: 自定义函数代码 结果 2.Prewitt 不 ...
- OpenCV+python:Canny边缘检测算法
1,边缘处理 图像边缘信息主要集中在高频段,通常说图像锐化或检测边缘,实质就是高频滤波.我们知道微分运算是求信号的变化率,具有加强高频分量的作用. 在空域运算中来说,对图像的锐化就是计算微分.由于数字 ...
- Canny边缘检测算法
1. 写在前面 最近在做边缘检测方面的一些工作,在网络上也找了很多有用的资料,感谢那些积极分享知识的先辈们,自己在理解Canny边缘检测算法的过程中也走了一些弯路,在编程实现的过程中,也遇到了一个让我 ...
- 【算法随记一】Canny边缘检测算法实现和优化分析。
以前的博文大部分都写的非常详细,有很多分析过程,不过写起来确实很累人,一般一篇好的文章要整理个三四天,但是,时间越来越紧张,后续的一些算法可能就以随记的方式,把实现过程的一些比较容易出错和有价值的细节 ...
- canny边缘检测算法 opencv_OpenCV-Python Canny边缘检测 | 十九
目标 在本章中,我们将学习 Canny边缘检测的概念 OpenCV函数: cv.Canny() 理论 Canny Edge Detection是一种流行的边缘检测算法.它由John F. Canny发 ...
- python canny检测_【数字图像分析】基于Python实现 Canny Edge Detection(Canny 边缘检测算法)...
Canny 边缘检测算法 Steps: 高斯滤波平滑 计算梯度大小和方向 非极大值抑制 双阈值检测和连接 代码结构: Canny Edge Detection |Gaussian_Smoothing ...
- Canny边缘检测算法原理及其VC实现详解(一)
原文地址:http://blog.csdn.net/likezhaobin/article/details/6892176 图象的边缘是指图象局部区域亮度变化显著的部分,该区域的灰度剖面一般可以看作是 ...
最新文章
- 到底什么是AI0T?现在不少头部企业都在打造AIOT概念,今天我们就梳理一下AIOT产业都包含了哪些,启明云端在AIOT中,能提供哪些解决方案?
- USACO 3.1 Score Inflation(完全背包 模版)
- c程序设计语言选修难吗,欢迎大家选修C语言程序设计这门课,本帖解释一下一些常见的问题...
- rgb sw 线主板接口在哪_光有RGB还不够,显卡竖装才更显高大上,酷冷TD500机箱装机...
- 飞磨科技php,昆虫飞行信息系统(飞行磨)
- 元气骑士机器人旁边建筑_元气骑士机器人的一些经验
- JSchException: Algorithm negotiation fail
- Boost serialization
- 免费开源的几款Web服务器软件简介
- 抖音只能上下滑动吗_抖音只能上下滑动吗_实现仿抖音视频滑动的两个方案
- 阿里云 mysql 100_MySQL服务进程占用系统CPU达100%-阿里云开发者社区
- 一种通过加速粒子进入其它宇宙的机器
- 1-乙基-3-甲基咪唑四氟硼酸盐/[C2MIm]BF4/cas:143314-16-3/分子量:197.97/离子液体
- f烽火ExMobi,移动应用平台的互联网思维
- 新加坡国际学校IB成绩亮眼,全球40%满分考生来自新加坡
- 学ui和python哪个好找工作_学it好不好找工作?过来人告诉你
- 时间复杂度O(n)什么意思
- 泰拉瑞亚修改器服务器能用吗,泰拉瑞亚修改器使用方法详细讲解
- SQL数据库中的一列数据按照英文字母先后顺序排列,怎么可以做到?
- Linux卸载安装bind,Bind编译安装详解
热门文章
- c语言中文网_在C语言中使用中文字符
- memcached php 测试,php一致性hash性能测试(flexihash/memcache/memcached)
- 蓝桥杯——阿尔法乘积
- 洛谷P1216 [USACO1.5][IOI1994]数字三角形 Number Triangles
- Java 1.1.7 String API (!!!)
- Markdown中的特殊符号
- 基于结构的虚拟筛选模型 gnina 从源码编译
- c/c++教程 - 2.2 引用的使用方法,引用做函数参数,引用做返回值,引用的本质,常量引用
- J2EE的13种核心技术简介
- java.lang.InstantiationException: