前情提要:作为刚入门机器视觉的小伙伴,第一节课学到机器视觉语法时觉得很难理解,

很多人家的经验,我发现都千篇一律,功能函数没解析,参数不讲解,就一个代码,所以在此将搜集的解析和案例拿出来汇总!!!

一、opencv+python环境搭建

  其实能写python的就能写opencv,但是工具很总要,代码提示也很重要,你可能会用submit     vs等工具,submit编码个人觉得不够智能,vs的话过完年我学的方向不一致,所以没用

  推荐pycharm ,在项目setting中的项目解释器中安装opencv-python即可进行编码。python环境搭建也灰常方便。

二、边缘提取案例

  

import cv2
def edge_demo(image):
#GaussianBlur图像高斯平滑处理
blurred = cv2.GaussianBlur(image, (3, 3), 0)
  #(3, 3)表示高斯矩阵的长与宽都是3,意思就是每个像素点按3*3的矩阵在周围取样求平均值,,标准差取0
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
  #颜色模式转换成cv2.COLOR_BGR2GRAY模式下的灰度图像 edge_output = cv2.Canny(gray, 50, 150)
  #提取上一步中处理好的图像边缘,50和150分别代表低阈值和高阈值,高阈值用来将物体与背景区分开来,低的用于平滑连接高阈值产生的片段,使图像成一个整体
cv2.imshow("canny edge", edge_output)#输出灰度图像
  #原图与灰度图像与运算,按照灰度图剪切加和的原图
dst = cv2.bitwise_and(image, image, mask=edge_output) cv2.imshow("color edge", dst)#输出带颜色边缘图像 if __name__ == '__main__':
img = cv2.imread("cat.jpg")
# cv2.namedWindow("input image", cv2.WINDOW_AUTOSIZE)
cv2.imshow("input image", img)
edge_demo(img) cv2.waitKey(0)#等待键盘输入,不输入 则无限等待
cv2.destroyAllWindows()#清除所以窗口

三、解释功能函数

  其实上面的代码也是用的别人的,但绝大多数都没有解释,对于像我这种新手不是很友好

  •   高斯处理

    图像处理中,常用的滤波算法有均值滤波、中值滤波以及高斯滤波等。

  三种滤波器的对比:

  滤波器种类 基本原理 特点
  均值滤波 使用模板内所有像素的平均值代替模板中心像素灰度值 易收到噪声的干扰,不能完全消除噪声,只能相对减弱噪声
  中值滤波 计算模板内所有像素中的中值,并用所计算出来的中值体改模板中心像素的灰度值 对噪声不是那么敏感,能够较好的消除椒盐噪声,但是容易导致图像的不连续性
  高斯滤波 对图像邻域内像素进行平滑时,邻域内不同位置的像素被赋予不同的权值 对图像进行平滑的同时,同时能够更多的保留图像的总体灰度分布特征
  意思就是使你的图像灰度分布更均匀,每个点的像素均为周围按3*3的矩阵在周围取样求平均值,,标准差取0来处理
     blurred = cv2.GaussianBlur(image, (3, 3), 0)
#GaussianBlur图像高斯平滑处理
#(3, 3)表示高斯矩阵的长与宽都是3,意思就是每个像素点按3*3的矩阵在周围取样求平均值,,标准差取0
  • 灰度转换----》也叫做二值化处理

  故名思意就是转换成黑白图像,后面的参数中    cv2.COLOR_BGR2GRAY  其实就是色彩模式,所以函数名为 cvtColor(色彩模式转换)

  cvtColor()用于将图像从一个颜色空间转换到另一个颜色空间的转换(目前常见的颜色空间均支持),并且在转换的过程中能够保证数据的类型不变,即转换后的图像的数据类型和位深与源图像一致。

 gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
  #颜色模式转换成cv2.COLOR_BGR2GRAY模式下的灰度图像
  • 边缘识别提取

  这一步是将二值化后的图像提取边缘,50和150分别代表低阈值和高阈值,高阈值用来将物体与背景区分开来,低的用于平滑连接高阈值产生的片段,使图像成一个整体

  简明而言就是,小的用于细小的地方处理,大的宏观处理----》大阈值用于分离背景与轮廓,晓得用于拼接细小的轮廓,即可形成一个整体

edge_output = cv2.Canny(gray, 50, 150)
  #提取上一步中处理好的图像边缘,50和150分别代表低阈值和高阈值,高阈值用来将物体与背景区分开来,低的用于平滑连接高阈值产生的片段,使图像成一个整体
  • 输出即可,小面的函数只是对比学习而已,可以不用

(对于dst = cv2.bitwise_and(image, image, mask=edge_output) cv2.imshow("color edge", dst)#输出带颜色边缘图像
)  

python+opencv->边缘提取与各函数参数解析的更多相关文章

  1. Python中sort和sorted函数代码解析

    Python中sort和sorted函数代码解析 本文研究的主要是Python中sort和sorted函数的相关内容,具体如下. 一.sort函数 sort函数是序列的内部函数 函数原型: L.sor ...

  2. python通过装饰器检查函数参数的数据类型的代码

    把内容过程中比较常用的一些内容记录起来,下面内容段是关于python通过装饰器检查函数参数的数据类型的内容. def check_accepts(f): assert len(types) == f. ...

  3. python 装饰器修改调整函数参数

    简单记录一下利用python装饰器来调整函数的方法.现在有个需求:参数line范围为1-16,要求把9-16的范围转化为1-8,即9对应1,10对应2,...,16对应8. 下面是例子: def fo ...

  4. Python学习总结18:函数 参数篇

    1. 判断函数是否可调用 >>> import math >>> x = 1 >>> y = math.sqrt >>> cal ...

  5. Python学习札记(十三) Function3 函数参数二

    参考:函数参数 Note A.关键字参数: 1.关键字参数:**kw 可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple.而关键字参数允许你传入0个或任意个含参数名的 ...

  6. main函数参数解析

    int argc,char *argv agrc表示参数的个数 argv储存参数 这个函数的意思是逐一输出参数 实际上,main函数也可以带参数.带参数main函数的定义格式如下:void main( ...

  7. Matlab中plot函数参数解析

    功能 二维曲线绘图 语法 plot(Y) plot(X1,Y1,...) plot(X1,Y1,LineSpec,...) plot(...,'PropertyName',PropertyValue, ...

  8. Linux C编程--main函数参数解析

    我们经常用的main函数都是不带参数的.因此main 后的括号都是空括号.实际上,main函数可以带参数,这个参数可以认为是 main函数的形式参数.C语言规定main函数的参数只能有两个, 习惯上这 ...

  9. python 零散记录(六) callable 函数参数 作用域 递归

    callable()函数: 检查对象是否可调用,所谓可调用是指那些具有doc string的东西是可以调用的. 函数的参数变化,可变与不可变对象: 首先,数字 字符串 元组是不可变的,只能替换. 对以 ...

随机推荐

  1. Super Mario HDU - 4417 (主席树询问区间比k小的个数)

    Mario is world-famous plumber. His “burly” figure and amazing jumping ability reminded in our memory ...

  2. day48-线程-信号量

    #1.信号量,用来保证多个线程不会互相冲突. #2.迷你唱吧:每次只能有两人在里面唱k: from threading import Thread from threading import Sema ...

  3. 通过 WMI 返回硬盘序列号的一点小问题

    通过 SELECT * FROM Win32_PhysicalMedia 可以返回硬盘序列号,但是在实际使用中某些情况下(原因未知)返回的 SerialNumber 是实际硬盘序列号的字符串按字符Ur ...

  4. 用C语言实现的轴对称变换

    #include<stdio.h> main() { int i,p,n,k,f,c,h,g,w; ][]; ;i<=;i++) { ;p<=;p++) { a[i][p]=i ...

  5. android选择器汇总、仿最美应用、通用课程表、卡片动画、智能厨房、阅读客户端等源码

    Android精选源码 android各种 选择器 汇总源码 高仿最美应用项目源码 android通用型课程表效果源码 android实现关键字变色 Android ViewPager卡片视差.拖拽及 ...

  6. 三:mysql条件查询

    1:查询工资等于5000的员工

  7. 关于QGIS打开SHP文件属性表乱码

    解决方案是从网上看到的,一个台湾的朋友给出了具体的解决方法.但他说的方法的最后一步对我来说不适用,我稍作修改 具体如下:在线安装插件:Shapefile Encoding Fixer. 加载shp文件 ...

  8. 项目中spring容器加载的问题

    今天做一个项目采用的是传统架构,没有采用分布式,部署时出现了异常,信息是: org.springframework.beans.factory.NoSuchBeanDefinitionExceptio ...

  9. try中定义的变量在finally中找不到

    凡是代码块中的变量,作用域都只在代码块中 https://blog.csdn.net/qq_20936333/article/details/81062966 问题: 解决:

  10. 吴裕雄--天生自然Android开发学习:下载安装android stuio集成开发工具

    下载链接: https://developer.android.google.cn/index.html