簡體   English   中英

使用 cv2.imread() 時出現 Python openCV 錯誤

[英]Python openCV error while using cv2.imread()

import cv2
import numpy as np

#load color of an image in grayscale
img1 = cv2.imread('Tarun.jpg',0)

cv2.imshow('Hey its me Tarun yellogi',img1)

error: C:\projects\opencv-python\opencv\modules\highgui\src\window.cpp:331: error: (-215) size.width>0 && size.height>0 in function cv::imshow

img1 = cv2.imread('Tarun.jpg',0)

如您所知, imread讀取指定的圖像。 僅使用文件名,如下所示,python 嘗試從當前工作目錄讀取圖像。 如果該文件不存在,則不會報告錯誤並且img1的值為None

這行:

cv2.imshow('Hey its me Tarun yellogi',img1)

返回錯誤:

error: C:\\projects\\opencv-python\\opencv\\modules\\highgui\\src\\window.cpp:331: error: (-215) size.width>0 && size.height>0 in function cv::imshow

表示imshow命令中指定的圖像(即img1 )的寬度和/或高度為 0。錯誤消息是說函數imshow中的圖像必須具有寬度大於零的大小,並且高度大於零。

您可以使用img1.shape檢查圖像大小。 在這種情況下,您可能會收到錯誤消息AttributeError: 'NoneType' object has no attribute 'shape' 您可以進一步檢查img1Noneimg1 == None 如果您得到True響應,那么您就會知道img1不包含圖像數據。

TL; 博士

未找到文件“Tarun.jpg”,因此img1 == None

  • 當圖像路徑錯誤時會發生這種錯誤
  • 或者圖片不存在
  • 或者圖片損壞
  • 如果圖像不在當前目錄中,則必須提及圖像的絕對路徑
  • 使用os模塊使路徑在任何其他機器上工作,而不是硬編碼絕對路徑
  • 但是這個錯誤信息意味着imshow()沒有得到正確的圖像來顯示
  • 我會檢查圖像的形狀和值以確保圖像沒有損壞或圖像不是Noneprint(img1.shape)print(img1)
  • 如果帶有路徑的圖像不存在,則cv2.imread()返回None
  • 該錯誤還表明圖像的寬度和高度為零,這是不可能的

我認為您可以嘗試在循環中讀取圖片以防止因 Nonetype 錯誤而暫停! 它對我有幫助(在我的情況下,一些 jpg 文件是 Nonetype)

if img is None:
        continue

如果圖像不在當前目錄中,則必須提及圖像的絕對路徑。

使用os模塊使路徑在任何其他機器上工作,而不是硬編碼絕對路徑。

但是這個錯誤信息意味着imshow()沒有得到正確的圖像來顯示。 我會檢查圖像的形狀和值以確保圖像沒有損壞。

暫無
暫無

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

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