OpenCV 学习笔记 02 处理文件、摄像头和图形用户界面

在处理文件前需要引入OpenCV库,同时也引入unmpy库

import cv2
import numpy as np

1 基本的读写操作

1.1 图像文件的读写操作

1.1.1 图像文件的读取操作

opencv 的 imread() 函数和 imwrite() 函数支持各种静态图像文件格式。例如bmp, png, jpeg, tiff等。

cv2.imread(filename[, flags]) 

imread() 函数从文件中加载并返回该图像,若指定图像不能被读取(文件丢失、权限不正确、不支持或非法的格式等等),则返回一个空的矩阵。

opencv 为 flags 提供了枚举类型文档,主要有

  • IMREAD_UNCHANGED    如果设置,则按原样返回加载的图像(使用Alpha通道,否则会被裁剪)。 
  • IMREAD_GRAYSCALE     如果设置,则始终将图像转换为单通道灰度图像。 
  • IMREAD_COLOR              如果设置,请始终将图像转换为3通道BGR彩色图像。 
  • IMREAD_ANYDEPTH        如果设置,当输入深度为16/32位时,则返回相应的深度,否则将其转换为8位。 
  • IMREAD_ANYCOLOR       如果设置,则以任何可能的颜色格式读取图像。 
  • IMREAD_LOAD_GDAL      如果设置,请使用gdal驱动程序加载图像。

备注1:

cv :: ImreadModes {

  cv :: IMREAD_UNCHANGED = -1,

  cv :: IMREAD_GRAYSCALE = 0,

  cv :: IMREAD_COLOR = 1, 

  cv :: IMREAD_ANYDEPTH = 2,   cv :: IMREAD_ANYCOLOR = 4,      cv :: IMREAD_LOAD_GDAL = 8 

}

 

具体参考 Image file reading and writing

备注2:

filename 可以是绝对路径,也可以是相对路径。

win环境下的绝对路径:D:\\grandfather\\father\\test.png

Unix下的文件间隔符为 /

备注3:

无论采用哪种模式,imread() 函数均会删除所有透明alpha 通道信息。

备注4:

当图像文件为灰度格式时,imread() 函数也会返回 BGR(red-green-blue) 格式的图像,BGR与RGB所表示的色彩空间相同,但是字节顺序相反。

备注5:

那怎么读取灰度图文件后再保存为灰度图呢?

增加imread()函数的 flags 参数即可

grayImage = cv2.imread('test.png', cv2.IMREAD_GRAYSCALE)
cv2.imwrite('NewTest.png', grayImage)

1.1.2 图像文件的写入操作

imwrite(filename, img[, params])

该函数将图像保存为指定文件中

图像格式是根据文件扩展名选择的,一般情况下,该函数只能保存8位单通道或3位通道(按“BGR”通道顺序)的图像。

具体可参看1.1.1 中的代码示例。

另:

opencv可以读取一个格式图像文件,保存时选取另一种格式图像文件。

将 png --> jpg 格式。

image = cv2.imread('test.png')
cv2.imwrite('test.jpg',image)

1.2 图像与原始字节之间的转换

无论哪种格式的图像,每个像素都有一个对应值,但不同格式所表示的像素方式也存在有差异。

猜你喜欢

转载自www.cnblogs.com/gengyi/p/10211852.html