以下实验基于python==3.6、opencv-python==4.1.0.25、imutils==0.5.2
图片的读取 cv2.imread
该方法第一个参数为文件名filename(文件路径+文件名)
第二个为读取方式flags,可选参数
IMREAD_ANYCOLOR = 4
IMREAD_ANYDEPTH = 2
IMREAD_COLOR = 1
IMREAD_GRAYSCALE = 0
IMREAD_IGNORE_ORIENTATION = 128
IMREAD_LOAD_GDAL = 8
IMREAD_REDUCED_COLOR_2 = 17
IMREAD_REDUCED_COLOR_4 = 33
IMREAD_REDUCED_COLOR_8 = 65
IMREAD_REDUCED_GRAYSCALE_2 = 16
IMREAD_REDUCED_GRAYSCALE_4 = 32
IMREAD_REDUCED_GRAYSCALE_8 = 64
IMREAD_UNCHANGED = -1
前4中读取方式的shape和显示效果如下
可见IMREAD_GRAYSCALE
和IMREAD_ANYDEPTH
都只读取了一层灰度图像
而IMREAD_COLOR
和IMREAD_ANYCOLOR
读取了3层彩色图像
因为这里只测试了jpeg图片,可能在读取其他图片的情况下会有不同结果,大家可以自己试一下
cv2.IMREAD_GRAYSCALE (2048, 1536)
cv2.IMREAD_COLOR (2048, 1536, 3)
cv2.IMREAD_ANYDEPTH (2048, 1536)
cv2.IMREAD_ANYCOLOR (2048, 1536, 3)
下面是IMREAD_IGNORE_ORIENTATION
、IMREAD_LOAD_GDAL
、IMREAD_UNCHANGED
cv2.IMREAD_IGNORE_ORIENTATION (2048, 1536)
cv2.IMREAD_LOAD_GDAL (2048, 1536, 3)
cv2.IMREAD_UNCHANGED (2048, 1536, 3)
下面是IMREAD_REDUCED_COLOR_2
、IMREAD_REDUCED_COLOR_4
、IMREAD_REDUCED_COLOR_8
像素分别减少为原来的1/2、1/4、1/8,但依然是彩色像
cv2.IMREAD_REDUCED_COLOR_2 (1024, 768, 3)
cv2.IMREAD_REDUCED_COLOR_4 (512, 384, 3)
cv2.IMREAD_REDUCED_COLOR_8 (256, 192, 3)
下面是IMREAD_REDUCED_GRAYSCALE_2
、IMREAD_REDUCED_GRAYSCALE_4
、IMREAD_REDUCED_GRAYSCALE_8
像素分别减少为原来的1/2、1/4、1/8,并且都是灰度图像
cv2.IMREAD_REDUCED_GRAYSCALE_2 (1024, 768)
cv2.IMREAD_REDUCED_GRAYSCALE_4 (512, 384)
cv2.IMREAD_REDUCED_GRAYSCALE_8 (256, 192)
注:为了方便比较,以上所有图片在显示的时候又统一缩放为(512, 384)大小的图片并排显示
示例代码已经上传到github
来源:oschina
链接:https://my.oschina.net/u/4105485/blog/3082420