使用 OpenCV Python 檢查影像是否為空
OpenCV 是一個 Python 中的開源計算機視覺庫。它是 Python 中的影像處理庫之一,它使用 Python Numpy 庫,因此所有影像陣列都表示為 ndarray 型別。OpenCV-python 需要 numpy 庫,我們需要確保 numpy 也安裝在我們的 Python 直譯器中。
在本文中,我們將瞭解使用 OpenCV Python 檢查給定影像是否為空的不同方法。讓我們觀察輸入輸出場景,以瞭解如何使用 Python OpenCV 檢查給定影像是否為空。
輸入輸出場景
假設我們有一個空白的輸入影像,在輸出中,我們將看到一個語句,說明給定的影像是否為空。
輸入影像

輸出
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'))
輸入影像

輸出
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() 函式,以檢查給定的影像是否為空。
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP