def imread(filename: Any,
           flags: Any = None) -> None

filename:图片的绝对路径或者相对路径。 ps:路径中不能出现中文!
flags:图像的通道和色彩信息(默认值为1),即彩色图片。
flags = -1, 8位深度,原通道
flags = 0, 8位深度,1通道
flags = 1, 8位深度,3通道
flags = 2, 原深度, 1通道
flags = 3, 原深度, 3通道
flags = 4, 8位深度,3通道

那图像的深度,通道信息指的是什么呢?

图像的深度:

图片是由一个个像素点构成的,所有不同颜色的像素点构成了一副完整的图像,计算机中所有图片是以二进制存储 的
1 bit存储像素点的取值范围为0~1,人眼看来这幅图片是黑色或者白色。
4 bit存储像素点的取值范围为0~15
8 bit存储像素点的取值范围为 0~255

以此类推,我们把计算机存储单个像素点所用到的bit为称之为图像的深度.

图像的通道:

我们知道了图片的深度信息,如果是24位的图片他的取值范围为 0 到 2的24次方,这个取值范围是相当的庞大的,那怎么根据图片某像素的深度值来确定那一像素点的颜色呢?

我们都知道颜色的三元素 Red, Green, Blue. 如果是深度为24=3*8,我们刚好就可以用第一个8位存储Red值,第二个存储Green值,第三个存储Blue值, 2的8次方刚好是255,所以我们一般看到的RGB值都是(0-255,0-255,0-255)这样的值。如果用rgb来表示图片的颜色值,我们称这样的图片通道为3。

代码测试imread():

    # cv2.imread()接口读图像,读进来默认是BGR 格式数据格式在 0~255,通道格式为(W,H,C)
    img = cv2.imread('./lena.jpg', -1)
    plt.subplot(3, 2, 1)
    plt.imshow(img)
    plt.axis('off')
    plt.title('flag = -1')

    img_0 = cv2.imread('./lena.jpg', 0)
    plt.subplot(3, 2, 2)
    plt.imshow(img_0)
    plt.axis('off')
    plt.title('flag = 0')

    img_1 = cv2.imread('./lena.jpg', 1)
    plt.subplot(3, 2, 3)
    plt.imshow(img_1)
    plt.axis('off')
    plt.title('flag = 1')

    img_2 = cv2.imread('./lena.jpg', 2)
    plt.subplot(3, 2, 4)
    plt.imshow(img_2)
    plt.axis('off')
    plt.title('flag = 2')

    img_3 = cv2.imread('./lena.jpg', 3)
    plt.subplot(3, 2, 5)
    plt.imshow(img_3)
    plt.axis('off')
    plt.title('flag = 3')

    img_4 = cv2.imread('./lena.jpg', 4)
    plt.subplot(3, 2, 6)
    plt.imshow(img_4)
    plt.axis('off')
    plt.title('flag = 4')
    plt.show()

运行结果如下:
运行效果图

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐