浅谈Python中的opencv

描述

经典机器学习,深度学习,当下这些热门的词汇不知不觉在我们学习(diaosi)氛围浓重的大学蔓延开来,作为与计算机专业毫不相干的,指挥摁下开机键,点开穿越火线娴熟地操作wasd的我而言,当周围人讨论opencv,tensorflow,sklearn这些玄幻词汇时,听得我是一头雾水。今天,重拾一年前敲击hello world的自信,开启了Python的opencv生涯。

壹 为什么选择python?

作为时下最时尚的python语言,简洁的代码,借助于向军火库一般的各种开源工具包,你可以完成你想做的任何事。数值计算这些numpy,scipy,数据分析工具pandas,可视化matplotlib,可以使得非计算机工科生甚至文科生轻松上手,爬取处理数据。作为胶水语言的python在opencv上的应用不仅简单方便编写代码,其运行速度有时甚至优于c++等,让你更加专注于目标而不是语法结构。最重要的是,如果你已经下载过了anaconda python,安装opencv只需要一行代码就可完成!

贰 掌握anaconda和安装opencv

anaconda是用于科学计算的免费的python版本。可以在官网上下载anaconda,https://www.anaconda.com/,选择windows还是linux或是苹果的mac os。看清楚32位还是64位便可以下载。不过,下载数小时,经常下载不成功是常事。这时候,强烈建议逛一逛清华或者中科大的镜像站,下载变成分分钟的事。

opencv的安装:在网页上下载好对应版本的.whl文件后,打开你电脑的命令行,pip install一下就ok了。

叁 常见图片的格式

作为图像处理,那就需要知道常见的图片格式有哪些。

比较老的有bmp格式,bmp格式无损及没有压缩像素,但麻烦的是图片的体积偏大。

接着是jpg格式或者是jpeg格式,这是有损压缩的模式,将像素信息用jpeg保存成文件再读取出来。这个是我比较常处理的,用最少的磁盘空间得到最好的图片质量。

还有是png格式,是一种无损压缩模式,用的是行程编码算法,相比jpeg,更加适合存储几何特征比较强的图片。

我们在空间搞笑图片中常看见的GIF格式图片,是多帧图像的集合。我们处理读取时也要一帧一帧读。通过调节参数也可以控制显示快慢。

我们常说的黑白图像,在计算机中有两种。一种是位图模式,是真真切切的非黑即白,这种图像只有一位深度:0就是纯黑,1就是纯白。

还有一种图像叫灰度图像,在生活中我们常把灰度图像作为黑白图像。事实上,灰度图像有8位深度,(0,0,0,0,0,0,0,0)是纯黑,(1,1,1,1,1,1,1,1)是纯白,其余介于1至255之间的就是不同深度的灰度图像。

彩色图像就是RGB图像,顾名思义,RED,GREEN,BLUE,这三种色彩叠加组合可以构成我们人眼看到的任何颜色,在计算机处理彩色图像时,也是通过红绿蓝三个通道来进行,每个通道又各有八个深度,由此,我们知道,理论上计算机可以构成256的三次方种颜色!

肆 色彩空间转换

hsv颜色模型更接近人感觉颜色的方式,H是色相,S是饱和度,V是亮度。

lab色彩空间:L:整张图的亮度,a和b表示颜色多少,用于编码颜色。

opencv提供了上百种颜色空间转换方法,opencv做转化时,用到了cvtColor函数。

该函数用两个参数足以,第一个是图像名称,第二个是转换方式。

例如,我已经读入一个函数,

img = cv2.imread(path,way),

其中path是路径,way是读入方式,灰度图,彩色图还是加载alpha通道。

接着, gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) 这就完成了彩色图像与灰度图像之间的转化。

其中,cv2.COLOR_BGR2GRAY这个方式,如果转化后还想要csv,就cv2.COLOR_BGR2CSV,如果想变更通道顺序,那么cv2.COLOR_BGR2RGB就可以了,很好玩。

图像缩放用cv2.resize函数,例如变成400*400像素记得写成cv2.resize(img,(400,400))。同样如果想x方向缩小直接fx=0.5即可。

此外,图像反转,图像保存,阈值化处理等也被opencv包装成了函数,用起来也十分方便。
编辑:lyn

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分