OpenCV判断图片是否是黑白图片

OpenCV判断图片是否是黑白图

最近运行程序的时候,有一个错误一直出现:too many values to unpack,在代码中报错的这一行是这样的:

h, w, _ = image.shape

这三个返回值分别是高、宽和通道数(彩色图像是3),但是如果是黑白图像,不设置其他参数,黑白图像默认只返回高和宽,所以返回值的数量就对应不起来了。我这里本来的策略是判断图像返回值的数量,如果是两个就用两个去接,三个就按照原来的去接,代码如下:

if len(image.shape) == 2:
        h, w = image.shape
else:
        h, w, _ = image.shape

这里的问题解决了,但是新的问题出现了:在这里插入图片描述

看来后续的处理还是会出现相同的问题,与其再去修改后续逻辑,不如直接删除有问题的图像。好在黑白图像也不多,用OpenCV进行读取,然后判断图像的返回值,如果是两个则打印出当前的文件名,进行删除:

image_path =  'file_path'
image_files = os.listdir(image_path)
for images in image_files:
    image = cv2.imread(os.path.join(image_path, images), -1)
    if len(image.shape) == 2:
        print(images)

注意这里读取图像的时候为什么要加-1这个参数,因为不加的话,OpenCV会把黑白图像默认为彩色图像进行解析,1通道会复制两份变成三通道,这就是为什么cv2.imread(image)会返回同样的三个通道的原因,一开始我就被这个给坑了,打印出来一看没有1通道的图像。
找到图像以后删除了就可以了,程序不报错了。

你可能感兴趣的:(python,opencv,计算机视觉,人工智能)