繁体   English   中英

使用 OpenCV 检查图像是否全为白色像素

[英]Check if image is all white pixels with OpenCV

我正在使用 OpenCV (Python) 编写一个脚本,将图像分成不同的部分,以便稍后在每个部分上运行 OCR。 我有脚本将源图像分成我需要的所有框,但它也带有一些纯白色图像。

我很好奇是否有办法使用 OpenCV 检查图像是否只有白色像素。 我对这个图书馆很陌生,所以任何关于这方面的信息都会有所帮助。

谢谢!

方法#1: np.mean

计算图像的平均值。 如果它等于255则图像由所有白色像素组成。

if np.mean(image) == 255:
    print('All white')
else:
    print('Not all white')

方法#2: cv2.countNonZero

您可以使用cv2.countNonZero来计算非零(白色)数组元素。 这个想法是获得一个二值图像,然后检查白色像素的数量是否等于图像的面积。 如果匹配,则整个图像由所有白色像素组成。 这是一个最小的例子:


输入图像 #1(不可见,因为背景是白色的):

在此处输入图片说明

全白

输入图像 #2

在此处输入图片说明

不是全白

import cv2
import numpy as np

def all_white_pixels(image):
    '''Returns True if all white pixels or False if not all white'''
    H, W = image.shape[:2]
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1]

    pixels = cv2.countNonZero(thresh)
    return True if pixels == (H * W) else False

if __name__ == '__main__':
    image = cv2.imread('1.png')
    if all_white_pixels(image):
        print('All white')
    else:
        print('Not all white')
    cv2.imshow('image', image)
    cv2.waitKey()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM