python+opencv->边缘提取与各函数参数解析
前情提要:作为刚入门机器视觉的小伙伴,第一节课学到机器视觉语法时觉得很难理解,
很多人家的经验,我发现都千篇一律,功能函数没解析,参数不讲解,就一个代码,所以在此将搜集的解析和案例拿出来汇总!!!
一、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()#清除所以窗口
三、解释功能函数
其实上面的代码也是用的别人的,但绝大多数都没有解释,对于像我这种新手不是很友好
- 高斯处理
图像处理中,常用的滤波算法有均值滤波、中值滤波以及高斯滤波等。
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->边缘提取与各函数参数解析的更多相关文章
- Python中sort和sorted函数代码解析
Python中sort和sorted函数代码解析 本文研究的主要是Python中sort和sorted函数的相关内容,具体如下. 一.sort函数 sort函数是序列的内部函数 函数原型: L.sor ...
- python通过装饰器检查函数参数的数据类型的代码
把内容过程中比较常用的一些内容记录起来,下面内容段是关于python通过装饰器检查函数参数的数据类型的内容. def check_accepts(f): assert len(types) == f. ...
- python 装饰器修改调整函数参数
简单记录一下利用python装饰器来调整函数的方法.现在有个需求:参数line范围为1-16,要求把9-16的范围转化为1-8,即9对应1,10对应2,...,16对应8. 下面是例子: def fo ...
- Python学习总结18:函数 参数篇
1. 判断函数是否可调用 >>> import math >>> x = 1 >>> y = math.sqrt >>> cal ...
- Python学习札记(十三) Function3 函数参数二
参考:函数参数 Note A.关键字参数: 1.关键字参数:**kw 可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple.而关键字参数允许你传入0个或任意个含参数名的 ...
- main函数参数解析
int argc,char *argv agrc表示参数的个数 argv储存参数 这个函数的意思是逐一输出参数 实际上,main函数也可以带参数.带参数main函数的定义格式如下:void main( ...
- Matlab中plot函数参数解析
功能 二维曲线绘图 语法 plot(Y) plot(X1,Y1,...) plot(X1,Y1,LineSpec,...) plot(...,'PropertyName',PropertyValue, ...
- Linux C编程--main函数参数解析
我们经常用的main函数都是不带参数的.因此main 后的括号都是空括号.实际上,main函数可以带参数,这个参数可以认为是 main函数的形式参数.C语言规定main函数的参数只能有两个, 习惯上这 ...
- python 零散记录(六) callable 函数参数 作用域 递归
callable()函数: 检查对象是否可调用,所谓可调用是指那些具有doc string的东西是可以调用的. 函数的参数变化,可变与不可变对象: 首先,数字 字符串 元组是不可变的,只能替换. 对以 ...
随机推荐
- 记忆化dp博弈
题:http://poj.org/problem?id=2068 题意: 有两个队伍A,B,每个队伍有N个人,交叉坐.即是A(1,3,5,7.....)B(2,4,6,8....).告诉你每个mi(1 ...
- python中安装surprise中出现error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools":
pip安装 安装之前要先进行numpy的安装 pip install numpy pip install surprise 安装出错: 安装surprise需要Microsoft visual c++ ...
- UML Learning
在建筑业中,建模是一项经过检验并被广泛接受的工程技术,建立房屋和大厦的建筑模型,能帮助用户得到实际建筑物的印象.在软件建模中也具有同样的作用,建模提供了系统的蓝图. 建模是为了能够更好地理解正在开发的 ...
- Leetcode_开篇碎碎念
已经计划写leetcode3天了,但是到目前为止一道题还没有写,执行力我太差了. 写leetcode的原因有两个,一是锻炼自己代码水平,提高实力:二是考研据了解到的都会有上机考试,基本是c++,jav ...
- Linux文件与目录管理,常用命令总结
绝对路径: 以根目录 / 开始的相对路径: 相对于当前路径的写法 $PATH: 可执行文件路径的变量(出现在该变量下的文件可以在系统的任何目录下都可以执行) 获取路径的文件名: basen ...
- 接口测试 requests的身份认证方式
requests提供多种身份认证方式,包括基本身份认证.netrc 认证.摘要式身份认证.OAuth 1 认证.OAuth 2 与 OpenID 连接认证.自定义认证.这些认证方式的应用场景是什么呢? ...
- ReentrantLock(重入锁)的源码解析
转自:从源码角度彻底理解ReentrantLock(重入锁)](https://www.cnblogs.com/takumicx/p/9402021.html)) 公平锁内部是FairSync,非公平 ...
- [LC] 257. Binary Tree Paths
Given a binary tree, return all root-to-leaf paths. Note: A leaf is a node with no children. Example ...
- byte的取值范围是-128~127,那么包含-128和127吗?
本帖最后由 王德升老师 于 2019-12-27 17:56 编辑 byte的取值范围为什么是-128~127?如果面试官问你取值范围包含127吗?1. 首先我们知道Java中byte类型是1个字节占 ...
- Docker学习笔记_10 docker应用 - 部署TOMCAT服务
选择基镜像 基镜像使用dokcer hub官方提供的tomcat8 alpine当前最新版本,https://hub.docker.com/_/tomcat/ docker pull tomcat:8 ...