实验一 边缘提取

一、 实验目的
利用opencv编写实现下图的边缘提取

二、实验内容
利用opencv python实现边缘提取
(1)在python安装opencv库
如果安装了python,直接安装:pip install opencv-python

测试是否安装成功:python命令行输入import cv2,没有报错即成功

(2)编写代码
代码如下:

import cv2 #导入图片
img = cv2.imread('E:\\test.bmp')
cv2.namedWindow("image",cv2.WINDOW_AUTOSIZE)
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) #将图像转为灰度图像
gray = cv2.GaussianBlur(gray,(5,5),0)       #将图像进行高斯模糊
edged = cv2.Canny(gray,75,200)              #Canny边缘检测
#反色
def inverse_color(edged):height,width = edged.shapeimg2 = edged.copy()for i in range(height):for j in range(width):img2[i,j] = (255-edged[i,j])return img2
#显示图片
cv2.imshow('image',inverse_color(edged))
cv2.waitKey(0)
cv2.destroyAllWindows()

三、 运行结果

四、 问题及解决方法
(1)在下载opencv-python库时,可能因为网络超时而失败,这时可以下载whl文件,在命令提示符里输入:“pip install whl文件所在位置的绝对路径”,就会安装成功
Whl文件下载网址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv
(2)运行报错,且显示不出图片

解决办法:
在用到imread函数时,图像文件名索引地址中不能出现任何中文字符,如果在windows系统下,文件名的索引地址的分隔符需要用“\\”而不能用“\”,即“cv2.imread(‘E:\\test.bmp’)”而不是“cv2.imread(‘E:\test.bmp’)”

五、 实验总结
这次实验主要是利用opencv实现图像的边缘提取,一开始我选择的是利用vs来进行编写,可能是因为版本原因,导致总会报错,后来我看到网上有说opencv也提供python的接口,就选择了利用python来实现,在进行边缘提取时,了解了一些新的概念:

  1. 灰度图像:灰度图像(gray image)是每个像素只有一个采样颜色的图像,这类图像通常显示为从最暗黑色到最亮的白色的灰度,尽管理论上这个采样可以任何颜色的不同深浅,甚至可以是不同亮度上的不同颜色。灰度图像与黑白图像不同,在计算机图像领域中黑白图像只有黑色与白色两种颜色;但是,灰度图像在黑色与白色之间还有许多级的颜色深度。
  2. 高斯模糊:来减少图像噪声以及降低细节层次,使图片产生模糊效果
  3. Canny()函数:使用Canny算法对对输入图像进行边缘检测,Canny边缘检测的步骤:
    (1)使用高斯滤波,以平滑图像,滤除噪声;
    (2)计算图像中每个像素点的梯度强度和方向;
    (3)应用非极大值抑制,以消除边缘检测带来的杂散响应;
    (4)应用双阈值检测来确定真实的和潜在的边缘;
    (5)通过抑制孤立的弱边缘最终完成边缘检测。

opencv实现图像的边缘提取相关推荐

  1. Python,OpenCV骨架化图像并显示(skeletonize)

    Python,OpenCV骨架化图像并显示(skeletonize) 1. 效果图 2. 源码 参考: 1. 效果图 自己画一张图,原图 VS 骨架效果图如下: opencv logo原图 VS 骨架 ...

  2. 使用Python,OpenCV制作图像Mask——截取ROIs及构建透明的叠加层

    使用Python,OpenCV制作图像Mask--截取ROIs及构建透明的叠加层 1. 效果图 2. 源码 参考 这篇博客将介绍如何使用OpenCV制作Mask图像掩码.使用位运算和图像掩码允许我们只 ...

  3. 使用Python,OpenCV实现图像和实时视频流中的人脸模糊和马赛克

    使用Python,OpenCV实现图像和实时视频流中的人脸模糊和人脸马赛克 1. 效果图 2. 原理 2.1 什么是人脸模糊,如何将其用于人脸匿名化? 2.2 执行人脸模糊/匿名化的步骤 3. 源码 ...

  4. 使用Python和OpenCV检测图像中的条形码

    使用Python和OpenCV检测图像中的条形码 1. 效果图 2. 算法的步骤 3. 源码 参考 这篇博客将介绍使用计算机视觉和图像处理技术进行条形码检测的必要步骤,并演示使用Python编程语言和 ...

  5. 使用Python,OpenCV查找图像中的最亮点

    Python,OpenCV找出图像中的最亮点 1. 原理 2. 优化 3. 效果图 4. 源码 参考 这篇博客将向您展示如何使用Python和OpenCV查找图像中的最亮点,以及应用单行预处理代码-- ...

  6. 使用Python和OpenCV在图像之间执行超快速的颜色转换

    使用Python和OpenCV在图像之间执行超快速的颜色转换 1. 效果图 2. 原理 2.1 颜色转移算法 2.2 步骤 2.3 算法改进 3. 源码 参考 这篇博客将介绍如何使用Python和Op ...

  7. 使用Python、OpenCV翻转图像(水平、垂直、水平垂直翻转)

    使用Python.OpenCV翻转图像(水平.垂直.水平垂直翻转) 1. 效果图 2. 源码 参考 这篇博客将介绍如何使用Python.OpenCV翻转图像,类似于cv2.rotate(). 沿y轴水 ...

  8. 使用Python,OpenCV计算图像直方图(cv2.calcHist)

    使用Python,OpenCV计算图像直方图(cv2.calcHist 1. 效果图 2. 原理 2.1 什么是图像直方图? 2.2 计算直方图 2.3 可视化蒙版区域 3. 源码 参考 这篇博客将介 ...

  9. 使用Python,OpenCV进行图像平移转换

    使用Python,OpenCV进行图像平移转换 1. 效果图 2. 原理 3. 源码 参考 这篇博客将介绍如何使用Python,OpenCV对图像进行平移转换.平移是图像沿x轴和y轴的移动.使用平移, ...

最新文章

  1. poj 2455 Secret Milking Machine(二分枚举+最大流)
  2. .NET生态系统概览
  3. 【Python】AttributeError: module ‘numpy’ has no attribute ‘unit8’ 的解决方法
  4. Python开发——安装requests第三方库
  5. mysql多字段分库分表基因码_一文学会常用 MySQL 分库分表方案
  6. 学python有什么用-为什么要学Python?学了有什么用?
  7. 10. 在constructors内阻止资源泄露
  8. linux 删除压缩包_【干货】记住!这些 Linux 命令千万不要运行!
  9. MVC项目开发中那些用到的知识点(Ajax.BeginForm)
  10. iptables指南
  11. MathType与Office公式编辑器的差异
  12. 微波雷达感应开关,雷达感应智能模块,照明节能环保技术应用
  13. linux网桥动态ip,使用Linux主机当网桥
  14. 手机与个人计算机区别,手机CPU跟电脑CPU有什么差别?两者差距到底有多大?
  15. 【求职】江苏省 2020 年大学生核心就业能力培训笔记
  16. UE发生GPU崩溃D3D丢失,真的跟硬件有关系。
  17. 软件工程研究生在读一年总结
  18. Transformer结构的初步探索
  19. 拼多多API接口,item_search - 按关键字搜索商品
  20. Seq2Seq模型介绍

热门文章

  1. 手机屏幕材料区别 TFT和OLED
  2. 互联网医院系统软件开发|互联网医院管理系统开发的好处
  3. 做网站开发设计注意字体是否侵权
  4. python中xlrd模块_Python中的xlrd模块使用原理解析
  5. 电力系统系统潮流分析【IEEE 57 节点】(Matlab代码实现)
  6. Unable to find script library '/aspnet_client/system-web/1-1-4322/webvalidation.js'
  7. 开发一款系统软件大概需要多少钱呢
  8. 【WebApp】离线webapp (iPad版本)开发手记
  9. excel 如何超链接到另一个工作薄下查找相同字符数据
  10. 【折腾服务器 1】妖板 Intel N5105 + i226 主板安装 ESXi 7.0 教程