Opencv 图像处理:图像基础操作与灰度转化
本文已收录于 Opencv 系列专栏: 深入浅出OpenCV ,专栏旨在详解 Python 版本的 Opencv,为计算机视觉的开发与研究打下坚实基础。免费订阅,持续更新。
图像属性
1.图像格式
图像压缩比: 通过编码器压缩后的图象数字大小和原图象数字大小的压缩比。
BMP 格式 Windows 系统下的标准位图格式,未经过压缩,一般图像文件会比较大。在很多软件中被广泛应用。
JPEG 格式也是应用最广泛的图片格式之一,它采用一种特殊的有损压缩算法,达到较大的压缩比可达到 2:1 甚至 40:1,互联网上最广泛使用的格式
GIF 格式不仅可以是一张静止的图片,也可以是动画,并且支持透明背景图像,适用于多种操作系统, 体型很小,网上很多小动画都是 GIF 格式。但是其色域不太广只支持 256 种颜色。
PNG 格式与 JPG 格式类似,压缩比高于 GIF (因此 png 损失较小,质量更好),支持图像透明支持 Alpha 通道调节图像的透明度。
TIFF 格式它的特点是图像格式复杂、存贮信息多。在 Mac 中广泛使用, 非常有利于原稿的复制。很多地方将 TIFF 格式用于印刷。
2.图像尺寸
图像尺寸
图像尺寸的长度与宽度是以像素为单位的。
像素
像素是数码影像最基本的单位,每个像素就是一个小点,而不同颜色的点聚集起来就变成一幅照片。
灰度像素点数值范围在 0 到 255 之间, 0 表示黑、255 表示白,其它值表示处于黑白之间;
黑白照片只需一个通道表示即可。
彩色图用红、绿、蓝三通道的二维矩阵来表示。每个数值也是在 0 到 255 之间, 0 表示相应的基色,而 255 则代表相应的基色在该像素中取得最大值。
读入图像 cv2.imread()
参数说明:
第一参数为待读路径;
第二个参数为读取方式,常见读取方式有三种
显示图像 cv2.imshow()
参数说明:
参数 1 :窗口的名字
参数 2 :图像数据名/变量名
也可 matplotlib 导入图像
键盘绑定 cv2.waitKey(0)
删除窗口 cv2.destrovAllWindows()
保存图像 cv2.imwrite()
参数说明:
参数 1 :图像名(包括格式)
参数 2 :待写入的图像数据变量名。
3.图像分辨率
分辨率:单位长度中所表达或截取的像素数目。每英寸图像内的像素点数,单位是像素每英寸 (PPI) 。图像分辨率越高,像素的点密度越高,图像越清晰。
通道数:图像的位深度,是指描述图像中每个 pixel 数值所占的二进制位数。 位深度 越大则图像能表示的颜色数就越多,色彩越丰富逼真。
8 位:单通道图像,也就是灰度图,灰度值范围 2**8=256
24 位:三通道 3*8=24
32 位:三通道加透明度 Alpha 通道
灰度转化
目的
将三通道图像(彩色图)转化为单通道图像(灰度图)。
公式
3---->1: GRAY = B * 0.114 + G * 0.587 + R * 0.299
1---->3: R = G = B = GRAY; A = 0
函数:
cv2.cvtColor(img,flag)
参数说明
参数 1 :待转化图像
参数 2 :flag 就是转换模式
cv2.COLOR_BGR2GRAY :彩色转灰度
cv2.COLOR_GRAY2BGR:单通道转三通道
RGB 与 BGR 转化
Opencv 读取图像是以 BGR 读取的,但是许多包是 RGB 读取,因此有些情况下需要转化。
转化的方法
opencv 自带的方法转
numpy 转
示例:
版权声明: 本文为 InfoQ 作者【timerring】的原创文章。
原文链接:【http://xie.infoq.cn/article/079571708e31a598591ac92b6】。未经作者许可,禁止转载。
评论