图
人脸识别技术已经相当成熟, 大家不会因此而感到惊奇. OpenCV 在图像处理相关的各个领域都良好的表现.
图
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)
图
来源: http://www.jianshu.com/p/55d87bc1c35f