使用OpenCV Python检查图像是否为空

使用OpenCV Python检查图像是否为空

OpenCV是Python中的开源计算机视觉库之一。它是Python中的图像处理库之一,使用Python的Numpy库将所有图像数组表示为ndarray类型。OpenCV-Python需要numpy库,我们需要确保numpy也安装在我们的python解释器中。

在本文中,我们将看到使用OpenCV Python检查给定图像是否为空的不同方法。让我们观察输入输出的情景,以了解如何使用Python OpenCV检查给定图像是否为空。

输入输出情景

假设我们有一个空白的输入图像,并且在输出中,我们将看到一条声明,说明给定图像是否为空。

输入图像

使用OpenCV Python检查图像是否为空

输出

Image is empty

让我们讨论一下检查给定图像是否为空的不同方法。

通过唯一像素计数

通常,空白/空图像在整个图像中具有更多的唯一像素值。通过将唯一像素计数与阈值比较,我们可以确定空图像。

示例

在此示例中,我们将使用np.unique()方法获取唯一元素。

import numpy as np
import cv2

def is_empty(img):
   # Reading Image
   image = cv2.imread(img, 0)
   np.reshape(image, (-1,1))
   u, count_unique = np.unique(image, return_counts =True)

   if count_unique.size< 10:
      return "Image is empty"
   else:
      return "Image is not empty"

print(is_empty('whh.jpg'))

输入图像

使用OpenCV Python检查图像是否为空

输出

Image is empty

标准差

空图像的标准差应该接近零。通常,空白图像可能在整个图像中具有更均匀的像素值。我们可以使用标准差来计算均匀程度。如果值低于某个阈值,则可以说该图像为空。

示例

让我们取一个名为“blank.png”的图像并通过计算标准差来验证它。

import numpy as np
import cv2

def is_empty(img):
   # Reading Image
   image = cv2.imread(img, 0)
   np.reshape(image, (-1,1))
   std_dev=np.std(image)

   if std_dev < 1:
      return "Image is empty"
   else:
      return "Image is not empty"

print(is_empty('Blank.png'))

输出

Image is empty

我们使用 Numpy.std() 方法来计算图像像素值的标准差。

通过总和像素值

空/黑色图像的像素值为零。如果像素的总和不等于零,则可以说给定的图像不为空。如果总和等于零,则给定的图像为空。

示例

首先,我们将使用 numpy.zeros() 方法创建一个空白图像。然后验证给定的图像是否为空。

import numpy as np
import cv2

blank_image2 = np.zeros((100,100,3), dtype=np.uint8)
cv2.imwrite("result.jpg", blank_image2)

def is_empty(img):
   # Reading Image
   image = cv2.imread(img)

   # Checking if the image is empty or not
   if np.sum(image) == 0:
      result = "Image is empty!"
   else:
      result = "Image is not empty!"
   return result

print(is_empty('result.jpg'))

输出

Image is empty

结果图像的细节

结果图像由numpy数组数据的cv2.imwrite()方法创建。然后将result.jpg图像提供给定义的is_empty()函数,以检查给定的图像是否为空。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程