cv.imread()函数
整理下cv2.imread()函数的笔记
使用函数cv2.imread(filepath,flags)读入一副图片
filepath:要读入图片的完整路径
flags:读入图片的标志
cv2.IMREAD_COLOR:默认参数,读入一副彩色图片,忽略alpha通道,可以直接写1
cv2.IMREAD_GRAYSCALE:读入灰度图片,可以直接写0
cv2.IMREAD_UNCHANGED:顾名思义,读入完整图片,包括alpha通道,可以直接写-1
cv2.imread()读取图片后以多维数组的形式保存图片信息,前两维表示图片的像素坐标,最后一维表示图片的通道索引,具体图像的通道数由图片的格式来决定
下面的示例均基于下面这张图片
从详细信息可以看到,1.jpg含有4个通道(R G B+alpha)即位深为32,每一个通道占8位
查看cv.imread()的参数
import cv2
img = cv2.imread('1.jpg', cv2.IMREAD_UNCHANGED) #包含alpha通道
print(img.shape)
img = cv2.imread('1.jpg', cv2.IMREAD_COLOR) #彩色图像
print(img.shape)
img = cv2.imread('1.jpg', cv2.COLOR_BGR2GRAY) #颜色转换空间
print(img.shape)
img = cv2.imread('1.jpg', cv2.COLOR_RGB2GRAY)
print(img.shape)
img = cv2.imread('1.jpg', 1) #彩色图像
print(img.shape)
img = cv2.imread('1.jpg', cv2.IMREAD_GRAYSCALE) #灰度图像
print(img.shape)
img = cv2.imread('1.jpg', 0) #灰度图像
print(img.shape)
结果为:
(1262, 1288, 4)
(1262, 1288, 3)
(1262, 1288, 3)
(1262, 1288, 3)
(1262, 1288, 3)
(1262, 1288)
(1262, 1288)
由上面结果可以看出:
cv2.imread()的默认格式为bgr
cv2.imread()的默认通道格式HWC
接下来查看具体读取的格式:
import cv2
img = cv2.imread('1.jpg', cv2.IMREAD_COLOR)
print(img.shape)
print(img)
print(img.shape[0]) #1262
print(img.shape[1]) #1288
print(img.shape[2]) #3
结果为:
(1262, 1288, 3)
[[[255 255 255]
[255 255 255]
[255 255 255]
...
[255 255 255]
[255 255 255]
[255 255 255]]
[[255 255 255]
[255 255 255]
[255 255 255]
...
[255 255 255]
[255 255 255]
[255 255 255]]
[[255 255 255]
[255 255 255]
[255 255 255]
...
[255 255 255]
[255 255 255]
[255 255 255]]
...
[[255 255 255]
[255 255 255]
[255 255 255]
...
[255 255 255]
[255 255 255]
[255 255 255]]
[[255 255 255]
[255 255 255]
[255 255 255]
...
[255 255 255]
[255 255 255]
[255 255 255]]
[[255 255 255]
[255 255 255]
[255 255 255]
...
[255 255 255]
[255 255 255]
[255 255 255]]]
1262
1288
3
可以看出cv2.imread()函数是以多维数组形式存储的,此时得到的这个三维数组就是一个立方体,三维数组的第一维就是图片的高度,第二维是图片的宽度,第三维就是每个像素点在BGR通道的灰度值
img.shape[0]的值为图片的高度1262
img.shape[1]的值为图片的宽度12688
img.shape[3]的值为图片的通道3