OpenCV错误:即使文件存在,断言也失败

2024-05-16 08:09:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用this algorithm对Wiki图像集进行性别和年龄预测。获取以下错误。我在这里做了大量的研究,发现这个错误通常意味着图像不存在。我添加了一个打印语句来显示每张照片的名称。抛出错误的照片,10_0ŌNozomiŌ哈希.jpg,确实存在,如下图所示。你知道吗

enter image description here 0_1_马克波特.jpg你知道吗

0_1_OleksiyKartunov.jpg

10_0_AmiraWillighagen.jpg

10_0_AngelikaHellmann.jpg

10_0_CandyHsu.jpg

10_0_Catharina-Amalia,PrincessofOrange.jpg

10_0_EmilyAlynLind.jpg

10_0_KarenPendleton.jpg

10_0_LadyLouiseWindsor.jpg

10_0_NozomiŌhashi.jpg

Traceback (most recent call last):
  File "preprocess.py", line 246, in <module>
    align_faces(clean = True)
  File "preprocess.py", line 172, in align_faces
    aligned = FL.getAligns(picname)
  File "C:\Users\abc\Downloads\Age-Gender-Pred-master\align_faces.py", line 45, in getAligns
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.error: OpenCV(4.1.1) C:\projects\opencv-python\opencv\modules\imgproc\src\color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'

我认为可能是文件名中的外来字符导致了错误,因此我使用regex replace (^[a-zA-z]+$)编辑了所有文件名,并且脚本能够在没有任何外来字符的照片上运行相似数量的照片,然后在出现相同错误的情况下失败。然后我删除了字符串替换,因为这显然不是问题所在。我现在不知道是什么导致了这一切。你知道吗

失败的代码:

def getAligns(self,
                img,
                use_cnn = False,
                savepath = None,
                return_info = False):
    """
    get face alignment picture
    :param img: original BGR image or a path to it
    :param use_cnn: using CNN to extract aligned faces, if set, dlib 
                    be compiled with cuda support
    :param savepath: savepath, format "xx/xx/xx.png"
    :param return_info: if set, return face positinos [(x, y, w, h)] 
    :return: aligned faces, (opt) rects
    """
    if type(img) == str:
      img = cv2.imread(img)

    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

最后一行失败了。你知道吗

运行在Azure虚拟机、Windows 10、Python 3.7、64GB ram上。 提前感谢您的任何见解。你知道吗


Tags: inpyimgreturnparam错误linecv2