![](https://img.haomeiwen.com/i8207483/abe827a89b065f00.jpg)
人脸识别技术已经相当成熟,大家不会因此而感到惊奇。OpenCV 在图像处理相关的各个领域都良好的表现。
![](https://img.haomeiwen.com/i8207483/742e27b8726fd311.jpeg)
OpenCV 是一项图片处理的库,始于 Intel 随后得到 Willow Garage 支持,现在由 Itseez 来维护
- 跨平台
- 支持 C、C++ 和 python 等语言
- 开源项目
- 易于安装
等特点。
在 OpenCV 我们更多的操作矩阵(Matrix)来实现对图片的修改。其实我们看到图片都是一个像素按行和列组成的二维矩阵,每个像素又都包含 R、G 和 B 等通道来保存图片信息。
提到矩阵我们就不得不提及一下 Numpy 这个好用的 python 操作数组的库。所有 OpenCV 的数组结构的数据都可以转换为 Numpy 中提供数组结构。
读取图片
cv2.imread('lena.jpg',0)
第一个参数传递我们要读取的图片,第二参数控制加载图片的模式
- cv2.IMREAD_COLOR (1) 表示加载图片保留颜色
- cv2.IMREAD_GRAYSCALE (0) 表示加载图片仅保留灰度
- cv2.IMREAD_UNCHANGED (-1) 加载图片保留透明等通道
img = cv2.imread('lena.jpg',0)
print(img)
[[163 162 161 ... 170 154 130]
[162 162 162 ... 173 155 126]
[162 162 163 ... 170 155 128]
...
[ 43 42 51 ... 103 101 99]
[ 41 42 55 ... 103 105 106]
[ 42 44 57 ... 102 106 109]]
当 imread 方法没有找到图片文件,会返回 None 来代替数组
cv2.imshow('image',img)
cv2.waitKey(5000)
cv2.destroyWindows()
刚刚只是以数组形式输出了图片,我们还可以使用 imshow 方法来在屏幕上将图片显示出来,不过仅用 imshow 图片会一闪而过,可以使用 waitKey 来添加让在用户点击按键前一直显示图片,方法参数 5000 表示如果用户不做操作在 5 秒后也会关闭图片窗口。
写入图片
cv2.imwrite('lena_copy.png',img)
![](https://img.haomeiwen.com/i8207483/9d1499a56972fe6b.png)
网友评论