快速上手Opencv--我们先从一个图像处理的helloworld开始

快速上手Opencv--我们先从一个图像处理的helloworld开始

    • Opencv程序的helloworld
    • 图片写入
    • 更改图片大小

Opencv程序的helloworld

通常我们学习一门新的语言的时候,第一个运行的程序一般是helloworld。旨在向该程序说明,我已经开始了学习之路了,并且完成了一个简单的程序的实现。
helloworld的特点就是非常的简单,绝对的0基础。那么Opencv有没有这样一个helloworld的打开方式呢?肯定是有的,可惜我没有找到。但是大家不要慌张,这绝对不是一篇标题党,这里我会跟大家介绍一个我自己理解的helloworld程序,旨在说明,我们开始使用opencv了!

运行我们的第一个程序:打开一幅照片
这里我不介绍opencv的安装方式了,网上类似的介绍很多。我们直奔主题,如何用opencv打开一副本地照片。为了说明的更清晰,我采用图片的方式进行介绍,方便大家直观理解。
快速上手Opencv--我们先从一个图像处理的helloworld开始_第1张图片
快速上手Opencv--我们先从一个图像处理的helloworld开始_第2张图片
快速上手Opencv--我们先从一个图像处理的helloworld开始_第3张图片
快速上手Opencv--我们先从一个图像处理的helloworld开始_第4张图片
现在我们开始读取这个图片

import cv2   #第一步导入opencv模块
print(cv2.__version__) #检查一下我们的版本信息
3.4.2  #版本号信息
img=cv2.imread('katong.jpg',1) # 首先我们定义我们要读取的文件,cv2.imread是读取文件的函数
                               # 第一个参数‘katong.jpg'是要读取的照片的名称 ,第二个参数1代表彩色图像
                               # 如果是灰度图像,第二个参数为0

cv2.imshow('image',img)  #cv2.imshow是显示图片的函数 
                         #第一个参数'image'是图片显示的窗口形式,第二个参数就是我们上面的文件

cv2.waitKey(0)    #这是一个暂停程序,由于程序语言都是逐行运行的,如果不对程序进行暂停操作,我们的操作会继续
                  #下一行指令,可能无法实现突破显示。

下面是这个图片的显示
快速上手Opencv--我们先从一个图像处理的helloworld开始_第5张图片

图片写入

关于图片的写入,我们首先看一下代码,然后根据代码我们分析一下这中间发生了什么事情。

#第一步我们还是先导入cv2模块
import cv2

#这一步我们读取图片,注意这里我们只读取,并不做图片的显示
img=cv2.imread('katong.jpg',1)

#读取完图片之后,我们通过cv2.imwrite函数将该图片写入计算机,这一步相当于做了一个另存为:读取的文件名为'katong'
#存储的文件名为:'katong1'。那么我们为什么要做这么一步呢?这一步到底做了什么?这就要从上面的代码说起了。
#img=cv2.imread('katong.jpg',1)这一行命令实际上执行了四个动作,1读取图片;2封装格式解析;3,数据解码;4数据加载
#其中第一步和第四步是我们看得到的操作,第二步和第三步则是计算机自动运行的。关于这两步我们用下面的图显示
cv2.imwrite('katong1.jpg',img)
True

快速上手Opencv--我们先从一个图像处理的helloworld开始_第6张图片

快速上手Opencv--我们先从一个图像处理的helloworld开始_第7张图片
左边这幅图是我们第一个程序显示的图片属性,大小是65.8KB;右边这幅图是我们读取图片之后重新写入的图片属性,大小变为了130KB。为什么我们重新存储之后图片变大了?其实这就是上面程序说明里面提到的,图片的大小计算机是内部进行了压缩的。但是压缩的记录保存下来,我们再次写入的时候,这里就是原始的图像大小。

更改图片大小

JPG格式:有损压缩
和上面一样,我们先看代码

#第一步和第二步和之前一样,引入模块,读取数据
import cv2
img=cv2.imread('katong.jpg',1)

#大家重点看写入数据的变化,变化主要在后半段,
#’[cv2.IMWRITE_JPEG_QUALTY,30] 这个函数主要就是变更我们写入的数据的质量大小,或者叫像素大小,后面的值范围在0-100
#取值越小,像素越低
cv2.imwrite('katongtest.jpg',img,[cv2.IMWRITE_JPEG_QUALITY,0])

快速上手Opencv--我们先从一个图像处理的helloworld开始_第8张图片
这种通过降低图片质量压缩图片大小的方式,我们就叫做有损压缩

png格式:无损压缩
既然有有损压缩,就有无损压缩
老规矩,先上代码

#第一步和第二步引入模块,读取图片
import cv2
img=cv2.imread('katong.jpg',1)

#这里和JPG写入图片不同的是'[cv2.IMWRITE_PNG_COMPRESSION,0]'
#首先是JPEG改为PNG,其次是质量改为压缩比
#这里要注意,JPG质量范围是0-100,PNG压缩比是0-9
#JPG数字越小,越失真,PNG正好相反
cv2.imwrite('katongtest5.png',img,[cv2.IMWRITE_PNG_COMPRESSION,0])

快速上手Opencv--我们先从一个图像处理的helloworld开始_第9张图片

今天就介绍这么多,这只是基本的基本,入门的入门(可能入门都算不上)后面我会继续介绍opencv的基本用法,如果对您有帮助,可以做个标记留意后续文章。

你可能感兴趣的:(OpenCV实战教程)