簡體   English   中英

使用圖片時出現ValueError == None

[英]ValueError when using image == None


我正在為我的程序創建故障保護,因此無論何時不存在image = Noneimage = None ,它將顯示一條消息並終止程序。 我正在使用以下代碼作為執行此操作的方法:

src_img = cv2.imread('/home/nazar/Downloads/img_4.png', 1)
if src_img == None:
    exit('No such file or direcory!')
copy = src_img.copy()

如果沒有圖像,這會起作用,但是當有圖像時,會出現錯誤:

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

我嘗試按照錯誤的建議進行操作,並嘗試if src_img.all == None:現在沒有圖像時出現錯誤:

AttributeError: 'NoneType' object has no attribute 'all'

有沒有一種方法可以在不獲取這些錯誤消息的情況下實際執行此操作,並且在給出圖像或沒有給出圖像的情況下也可以工作。

您將收到第一個ValueError因為NoneType沒有定義對numpy數組的相等比較,因此使用了數組的比較方法。 Numpy將None轉換為對象數組,並將其廣播為圖像的大小。 ==的結果是逐元素比較,即與圖像大小相同的布爾數組。

除了這些,您應該做

if src_img is None:

is比較原始參考。 建議您檢查“無”,因為它更快並且“無”是一個單例。

第二個AttributeError來自以下事實:當src_img為None時,它沒有名為all的方法。 即使是適當的數組, src_img.all也只是對該方法的引用,而不是調用它的結果。

奇怪的是, if np.all(src_img == None):您本可以完全放棄的,但是您實際上不應該這樣做,因為在這種情況下,這是完全的瑣事。 src_img為None時,比較標量為True,因此np.all將返回True。 如果src_img是一個數字數組,則每個元素將比較False,而np.all將返回False。 這個世界唯一的錯誤結果是,如果您有一個src_img ,它是一個對象數組,其所有元素均為None。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM