基于Python的Opencv学习

基于python的opencv学习第一天

各位同学习opencv的小伙伴们,大家好。首先介绍一下,这是我第一次写博客,讲述的是关于opencv的非常非常基础的知识点,有一些我个人学习的看法和总结,希望帮助刚刚入门的opencv学习者们,当然也肯定有错误的地方,希望大佬看见手下留情。大家共同进步,把opencv学好把!!!

一.图像的基础知识

首先,我想给大家介绍一下关于图像的一些知识,这些知识对于我们这种急于立即看见学习效果的opencv学习者来说,可能显得不是很重要,但是我想毕竟opencv是用在视觉处理方面,既然说到视觉,就不能躲避谈图像的基础知识。(如果大家对图像基础了解的很透彻,可以直接跳过)
1.像素
图像是由像素点构成,所谓像素,我个人理解就是一个一个点,像素越高,代表着那个点的大小越小,反之,像素点越大,构成的图片看上去就越不平滑。如图左边就是像素低,像素点大,给人感觉就是看上去很粗糙,右上图就是像素高,像素点小,给人感觉很细腻。比较一个像素高低,就是看拍出来的图片的效果是否细腻,通俗来说,500W像素就是右上那幅图,1000像素就是左边那幅图。基于Python的Opencv学习
2. 图像分类
图像可以分成三类,分别是二值图像,灰度图像,RGB图像。![在这里插入图基于Python的Opencv学习
二值图像非黑即白,他的像素点只要黑白两种颜色,在计算机中用0和1来表示;灰度图像即在二值图像上加了灰色,在计算机中用0-255来表示(0代表黑色,255代表白色,其余的数字代表254中灰色);RGB图像就是彩色图像,在计算机中所有颜色都能由红,绿,蓝三种颜色构成,只不过三种颜色的比例不一样,三种颜色也是从0-255。任何一个彩色图像都是由三个灰度图像拼成彩色图像,只不过三个彩色图像比例不同。基于Python的Opencv学习
同样,我们可以从彩色图像转变成灰度图像,从灰度图像转变成二值图像,都是方便计算机进行计算,可能有小伙伴会问,这样转变会不会丢失信息,答案是不会的。举个栗子,从彩色转变成灰色图像,从三份变成一份,从三个数据变成一个数据,这样大大节约了CPU的计算时间,同时对三分数据进行加权处理(可能是这样处理),肯定能够保证图像数据不丢失。

二.图片处理

1.读入图像
在opencv中读入图像用cv2.imread()函数,正确表示格式为

img=cv2.imread(文件名,显示控制参数)

其中文件名很容易理解,就是你文件保存的路径,不过必须是完整路径,比如我的图片在电脑上路径就是C:\Users\LT010407\Desktop\1.jpg,参数就是指将该图像以什么类型读入,常见有三种参数:①cv.IMREAD_UNCHANGED 指以原图像读入(不改变);
②cv.IMREAD_GRAYSCALE 指用灰度图像读入;
③cv.IMREAD_COLOR 指用彩色图像读入

注:如果不做任何改变读入图像,则后面的读入参数可以省略,只需要给一个文件名即可。

示例:img=cv2.imread(r"C:\Users\LT010407\Desktop\1.jpg")

2.显示图像
Ⅰ.在opencv中显示图像用cv2.imshow()函数,正确表示格式为:

cv.imshow(窗口名,图像名)

其中窗口名由我们自己命名,图像名即是我们需要显示的图像的名字。

示例:cv2.imshow(“image”,img)

Ⅱ.在显示图像时候,我们会遇到另一个函数cv2.waitKey(delay),正确表示格式为:

waitKey(delay)

其中delay可以有三种形式:
①delay>0 等待delay毫秒;
②delay<0 等待键盘单击;
③delay=0 无限等待

示例:cv2.waitKey(0)

Ⅲ.当显示图像的窗口打开后,我们需要关闭窗口,这时候就要用上我们的cv2.destroyAllWindows(),正确格式为:

cv2.destroyAllWindows()

他的功能就是删除所有窗口

3.保存图像
在opencv中显示图像用cv2.imwrite()函数,正确表示格式为

cv2.imwrite(文件地址,文件名)

其中文件地址容易理解,就是我们想要给这个显示的图像保存的地址,和读入图像的文件地址相同,文件名就是我们需要保存的图像名字。

示例:cv2.imwrite(r"C:\Users\LT010407\Desktop\1_gray.jpg",img)
保存文件可以和读入文件对比理解学习。

接下来就可以运行代码看看成果了

基于Python的Opencv学习

基于Python的Opencv学习
结果是先读入图片,然后显示图片,然后再保存另一张一模一样的该图片,注意图片窗口名称即是我命名的那个“image”

三.关于图片格式的小常识

我们刚刚已经输出了我们人生中第一张通过计算机“克隆”的图片,但是我们有没有注意到图片的后缀名有jpg,png等等,现在我就给大家普及一下这些后缀名分别代表什么。

GIF格式:基于LZW算法的连续色调的无损压缩格式,他支持256种色彩的图像,但我们更多认识的是GIF动态图,这就是把存于一个文件中的多幅图像数据逐幅读出并显示到屏幕上,构成最简单的动画。

JPEG格式:文件后缀名为“jpg”或“jpeg”,是最常用的图像文件格式,一种有损压缩格式,能够将图像压缩在很小的储存空间,图像中重复或不重要的资料会被丢失,容易造成图像数据的损伤。但是这种格式应用最广泛,他文件尺寸较小,下载速度快在极高的压缩率的同时还能展现丰富的图像,换句话说,用最少的磁盘空间得到较好的图像品质。

PNG格式:PNG能够提供比GIF小30%的无损压缩图像文件,支持高级别无损耗压缩,是网上接受的最新图像文件格式,但正是因为比较新,所有一些低级的浏览器或者程序可能不支持PNG文件。

PSD格式:一种非压缩的原始文件保存格式,该格式文件有时候容量很大,可以保留所有原始信息。

我只是简单的列举出来了一些比较常见的文件格式,至于其他的格式,用到时候我会说明,小伙伴们也可以自己查询百度了解一下。

这是本人第一篇博客,非常感谢小伙伴们能够看到这儿,希望大家能够学好opencv,共同进步!!!
(这是第一篇学习opencv的博客,也是我第一天学习opencv的心得,之后会不断更新。转载注明出处)