边缘检测实际上就是对图像进行系统的梯度计算,包含了图像的噪声处理,非极大值抑制,双阈值检测等一系列图像处理方式,通过这些方式处理图像后得到图像的轮廓。这些方式在之前的博客都已经提到过i了,而Opencv提供了一个非常方便的函数进行边缘检测,它将高斯滤波,梯度大小及方向计算,非极大值抑制,双阈值检测等几个边缘检测常用函数全部集成为一个函数,使用者只需要给出两个阈值的大小即可。

相关函数

cv2.Canny(XT_gray,minVal,maxVal):XT_gray为要进行处理的图像,而minVal是最小阈值,maxVal则是最大阈值。这两个参数可以自己设定,范围是0~255,而最小阈值表示如果检测到的梯度像素点小于最小阈值,那么它将会被舍去(即赋值为0),而介于最小阈值和最大阈值之间的梯度像素点,如果该像素点与边界相连,则将其保留为边界,否则同样舍去,而如果梯度像素点大于最大阈值,则直接将其认定为边界像素点,这样我们就舍去了图像模糊的部分,得到了图像明显的边界。

注意:在实际操作中,如果想要保留图像更多细节,则可以适当降低最小阈值,而反过来,如果想要简化图像,只想得到图像大体轮廓,则应该增大最小阈值。

代码示例

import cv2#导入相关包
import numpy as np
import matplotlib.pyplot as plt
XT_gray = cv2.imread("XT.jpeg",cv2.IMREAD_GRAYSCALE)#读入图像并将格式转化为灰度图
def cv2_imshow(name,img):#定义展示图像的函数cv2.imshow(name,img)cv2.waitKey(0)cv2.destroyAllWindows()
cv2_imshow("XT",XT_gray)#展示读入为灰度图的图像
X = cv2.Canny(XT_gray,30,100)#最小阈值比较小的情况
Y = cv2.Canny(XT_gray,150,200)#最小阈值比较大的情况
All = np.hstack((X,Y))#拼接两张图像以进行对比
cv2_imshow("All",All)#展示图像

运行结果 

原图

灰度图 

不同阈值的对比图,可以看到,左边最小阈值较小的图像细节会比较明显,但是看起来轮廓就不太清晰了

基于Python的Opencv边缘检测相关推荐

  1. ubuntu16.04安装python.h_ubuntu16.04 下基于 Python 的 OpenCV 的安装

    ubuntu16.04 下基于 Python 的 OpenCV 的安装 这几天一直在学习基于 Python 的 OpenCV , 开发环境是在 Ubuntu16.04 下, 学习的心得就是基于 Pyt ...

  2. 基于python和Opencv将多张图片结合为一张图片的办法

    基于python和Opencv将多张图片结合为一张图片的办法 需要用到的python包 代码本体 这两天写结课论文,需要做一个好看一点的图,要把多张图片结合为同一张图片,本来想用ps,但是懒,干脆用代 ...

  3. 基于Python的OpenCV+TensorFlow+Keras人脸识别实现

    前言:本节要讲的人脸识别主要是借鉴了 一位研究生前辈的文章 我只是在他的基础上进行了改动,让代码能在现在的TensorFlow2.X 等的环境下运行 先看一下效果图 完整工程及源代码请点击链接下载:人 ...

  4. 基于Python通过OpenCV实现的口罩识别系统理论篇

    基于Python通过OpenCV实现的口罩识别系统理论设计篇 一.项目实现环境 基于Python 3.8.1版本 opencv-python 4.2.0.34版本 需要自己下载OpenCV的库文件,添 ...

  5. 基于Python与OpenCV的纸质票自动统计功能的实现(一)界面编程

    基于Python与OpenCV的纸质票自动统计功能的实现(一)--界面编程 作为一个资深的自动化工程师,界面编程对我来说太熟悉不过了,但是当时用的都是工业界面编程软件,比如WINCC.组态王等等,在这 ...

  6. 基于Python和OpenCV的面积计算

    基于Python和OpenCV的面积计算 import cv2 import numpy as npimage1 = cv2.imread("F:\\Python\\Image\\1.png ...

  7. cv2 python 获取斑马线_基于python的opencv图像处理实现对斑马线的检测示例

    基本思路 斑马线检测通过opencv图像处理来进行灰度值转换.高斯滤波去噪.阈值处理.腐蚀和膨胀后对图像进行轮廓检测,通过判断车辆和行人的位置,以及他们之间的距离信息,当车速到超过一定阈值时并且与行人 ...

  8. 基于python的opencv相机标定(采用黑白棋盘格标定板)

    基于python的相机标定(采用黑白棋盘格图片) 系列文章目录 [第一章 基于python的相机标定(采用黑白棋盘格图片)](https://blog.csdn.net/HWHXXX/article/ ...

  9. 树莓派安装基于python的opencv

    文章目录 前言 一.需要的设备 二.烧录系统 三.核对python版本是否为3.9.2,并打开摄像头功能 四.安装opencv 五.测试opencv 总结 前言 本文章需求python版本为3.9.2 ...

最新文章

  1. 打开深度学习的黑盒,详解神经网络可解释性
  2. C++调用matlab char16_t 重复定义
  3. RSA加密的填充模式
  4. 直播回放 | 人工智能强化金融风控(附PPT)
  5. 机器学习数据集划分-训练集,验证集,测试集
  6. HTML 静态网页制作12月2日表单样式
  7. 北漂、海漂的你,每个月发薪资支付生活成本后还剩多少钱
  8. 3800元新机要凉了?预售惨淡,手机界老大哥的面子往哪儿搁?
  9. 设计模式之单例模式8种实现方式,其一:饿汉式-静态常量饿汉式
  10. Codeforces Round #553 (Div. 2) 题解
  11. 打乱一个排好序的 list 对象 alist?
  12. 【SpringBoot_ANNOTATIONS】 总集篇
  13. php打开word文件怎么打开,docx文件怎样打开
  14. Windows PE的作用
  15. 2021年N1叉车司机最新解析及N1叉车司机模拟考试
  16. [黑群晖经典教程] 一步一步建立自己的黑群晖
  17. 治疗骨髓增殖性肿瘤的一种新型高选择性酪氨酸激酶抑制剂ZT55的研究
  18. mysql duplicated错误码_Mysql常见错误码讲解
  19. 第二章-数据描述(初级统计)
  20. Java实验——分别统计字符串中出现的大写字母、小写字母个数,以及出现的数字字符以及其他字符的个数

热门文章

  1. 快手用旺旺瓶子做机器人_中世机器人崛起 做低端制造业用得起的机器人
  2. 学习Pytorch官方Demo——Lenet,以及遇到的问题
  3. 解决 H5 IOS input 聚焦时,软键盘将页面整个推上去,键盘收起页面未下移 BUG
  4. linux获取窗口句柄,如何获取在winexec或shellexecute中执行的句柄?
  5. 进口面料洗标大全_巧手缝纫_新浪博客
  6. php 查找数组指定元素,php查找数组元素各种方法总结
  7. 重磅消息!视频号直播可以打赏了,微信上线“微信豆”丨国仁网络
  8. 银行“跑马圈地”新零售,AI大数据成“加速器”
  9. git如何除去分支中突然出现的其他代码
  10. react-native通信流程