2024-05-18 21:04:25 发布
网友
我正在使用OpenCV(Python)编写一个脚本,将图像分割成不同的部分,以便稍后在每个部分上运行OCR。我已经得到了将源图像分割成我需要的所有框的脚本,但它也附带了一些纯白色图像
我很好奇是否有办法用OpenCV检查图像是否只有白色像素。我对这个图书馆很陌生,所以关于这个的任何信息都会很有帮助
谢谢
方法#1:^{}
计算图像的平均值。如果它等于255,则图像由所有白色像素组成
255
if np.mean(image) == 255: print('All white') else: print('Not all white')
方法#2:^{}
可以使用cv2.countNonZero对非零(白色)数组元素进行计数。其思想是获得一个二值图像,然后检查白色像素的数量是否等于图像的面积。如果匹配,则整个图像由所有白色像素组成。下面是一个最起码的例子:
cv2.countNonZero
输入图像#1(由于背景为白色,因此不可见):
All white
输入图像#2
Not all white
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()
方法#1:^{}
计算图像的平均值。如果它等于
255
,则图像由所有白色像素组成方法#2:^{}
可以使用
cv2.countNonZero
对非零(白色)数组元素进行计数。其思想是获得一个二值图像,然后检查白色像素的数量是否等于图像的面积。如果匹配,则整个图像由所有白色像素组成。下面是一个最起码的例子:输入图像#1(由于背景为白色,因此不可见):
输入图像#2
相关问题 更多 >
编程相关推荐