OpenCV3.4 + Python 学习从入门到放弃(一)

发生了什么

  今天突然心血来潮想学一波OpenCV,于是就装了一个python版的OpenCV库,写一下学习笔记。接下来进入正题吧。

什么是OpenCV

  说实话,我也是第一次接触OpenCV,虽然大致知道是用来处理图像的,但我还是去百度了一下什么是OpenCV。百度百科粘贴如下:

OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
OpenCV用C++语言编写,它的主要接口也是C++语言,但是依然保留了大量的C语言接口。该库也有大量的Python、Java and MATLAB/OCTAVE(版本2.5)的接口。这些语言的API接口函数可以通过在线文档获得。如今也提供对于C#、Ch、Ruby,GO的支持。
所有新的开发和算法都是用C++接口。一个使用CUDA的GPU接口也于2010年9月开始实现。

  唔,原来是一个计算机视觉库,那就很有意思了呀,人脸识别之类的应该也能基于这个库完成,先试试看吧。

安装

  安装的时候我选择直接使用pip来安装,方便一点。在终端输入

pip install opencv-python

按下回车键,等待pip自动把相关内容装好就行了,然后在ipython里面输入

import cv2
cv2.__version__

如果能正常输出OpenCV的版本号即是安装成功。如图:

简单的尝试

打开文件

  想要处理图片,首先第一步应该是要打开图片吧。打开图片可以调用imread函数,imread函数的定义如下:

imread(filename, flags=none)

其中,flags可以有三种取值:
+ cv2.IMREAD_COLOR : 加载一张有颜色的图,也可以用1代替
+ cv2.IMREAD_GRAYSCALE : 加载一张灰度图片,也可以用0代替
+ cv2.IMREAD_UNCHANGED : 加载一张带有透明度通道(Alpha通道)的图片,也可以用-1代替

举个简单的例子:

import cv2
img=cv2.imread("test.png",cv2.IMREAD_GRAYSCALE)

显示图片

cv2.imshow(winname,mat)
  • 第一个是一个字符串,作为弹出窗体的标题
  • 第二个参数是一个imread产生的image对象

例如:

import cv2
image = cv2.imread('test.jpeg', 0)
cv2.imshow('image', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

写入图片

cv2.imwrite(filename,image,params=None)

params一般是一个数组,第一个元素是属性,第二个是属性值
+ cv2.CV_IMWRITE_JPEG_QUALITY 设置为JPG文件,图片质量为0-100,越大质量越好,默认95
+ cv2.CV_IMWRITE_WEBP_QUALITY 设置图片的格式为.webp格式的图片质量,值为0–100
+ cv2.CV_IMWRITE_PNG_COMPRESSION 设置.png格式的压缩比,其值为0–9(数值越大,压缩比越大),默认为3

例如:

cv2.imwrite('test.jpg',img,[int(cv2.IMWRITE_JPEG_QUALITY),70])
sunyq

sunyq

一个苦逼的程序员,一不小心入了安全的坑,从此再也无法从坑里走出来。每天被大佬按在地上摩擦,希望大佬放过这个简陋的小站,别日了。

留下你的评论

*评论支持代码高亮<pre class="prettyprint linenums">代码</pre>