簡體   English   中英

如何使 cv2.imread() 不為空?

[英]How to make cv2.imread() not empty?

我遇到問題的代碼部分如下。

if __name__ == '__main__':
    for n, image_file in enumerate(os.scandir(image_folder)):
        img = image_file
        fig, ax = plt.subplots(1)
#       mngr = plt.get_current_fig_manager()
#       mngr.window.setGeometry(250, 120, 1280, 1024)
        image = cv2.imread(image_file.path)
        image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

我收到以下錯誤

 image = cv2.cvtColor(image,cv2.COLOR_BGR2RGB)
    cv2.error: OpenCV(3.4.4) C:\projects\opencv-python\opencv\module\imgproc\src\color.cpp:181:error:(-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'

我知道 imread() 可能是空的,因為它試圖讀取的圖像沒有正確保存。 我正在嘗試使用另存為 000001、000002、000003 的 3 個圖像來測試此代碼......我對為什么保存在 C:\\imagez 文件夾中的圖像不起作用感到困惑。 我嘗試保存 3 個新圖像,但仍然出現相同的錯誤。 任何建議都會很棒!

如果您閱讀有關cv2.imread()文檔,您會發現它可能會失敗 - 在這種情況下,它返回None (這就是Mat::data==NULL在 python 中的轉換):

函數 imread 從指定文件加載圖像並返回它。 如果無法讀取圖像(由於文件丟失、權限不當、格式不受支持或無效),則該函數返回一個空矩陣 ( Mat::data==NULL )。

如果您將None作為輸入提供給cv2.cvtColor(image, cv2.COLOR_BGR2RGB) - 它會在檢查(-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'的參數(-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'並找到時(-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'它是None

使固定:

if __name__ == '__main__':
    for n, image_file in enumerate(os.scandir(image_folder)):
        fig, ax = plt.subplots(1)
        image = cv2.imread(image_file.path)
        if image:
            image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
        else:
            print("Unable to load image at path {}".format(image_file))

檢查給您帶來這些問題的路徑的 _exact_spelling - 這可能只是您的路徑/文件名中的拼寫錯誤。

暫無
暫無

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

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