Python 隐式OpenCv错误

Python 隐式OpenCv错误,python,python-3.x,opencv,Python,Python 3.x,Opencv,我正在尝试使用Python中使用OpenCv的haarcascade全身算法在图像中检测人类 当我考虑在单个图像上使用它时,我没有遇到任何问题。 import numpy as np import cv2 as cv body_cascade = cv.CascadeClassifier(r'...\haarcascade_fullbody.xml') image = cv.imread(r'...\image.jpg') gray = cv.cvtColor(image, cv.COLOR_

我正在尝试使用Python中使用OpenCv的haarcascade全身算法在图像中检测人类

当我考虑在单个图像上使用它时,我没有遇到任何问题。
import numpy as np
import cv2 as cv

body_cascade = cv.CascadeClassifier(r'...\haarcascade_fullbody.xml')
image = cv.imread(r'...\image.jpg')
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
body = body_cascade.detectMultiScale(gray, 1.01, 4)
for (x,y,w,h) in body:
    cv.rectangle(image,(x,y),(x+w,y+h),(255,0,0),3)
但是,当我尝试使用同一个程序并同时迭代多个图像时,我得到了一个神秘的OpenCv错误。我在一个文件夹中有一些图像,我想将其中包含人类的图像与不包含人类的图像分开。我写了以下内容:

import os

for file in os.walk(r'...\Folder'):
    file=str(file)
    im=cv.imread(file)
    gray = cv.cvtColor(im, cv.COLOR_BGR2GRAY)
    body = body_cascade.detectMultiScale(gray, 1.01, 4)
    for (x,y,w,h) in body:
        cv.rectangle(im,(x,y),(x+w,y+h),(255,0,0),3)
    if(body.size >= 0):
        print('okay') 
    else:
        print('Not okay')
但我得到了以下错误:

error:OpenCV(3.4.2)c:\projects\OpenCV python\OpenCV\modules\imgproc\src\color.hpp:253:error:(-215:断言失败)函数“cv::CvtHelper::CvtHelper”中的VScn::contains(scn)和&VDcn::contains(dcn)和&VDepth::contains(depth)

对于线
gray=cv.cvt颜色(im,cv.COLOR\u BGR2GRAY)

我无法理解错误是什么,以及为什么在拍摄单个图像时使用相同的代码,但在遍历文件夹时却不使用相同的代码。我需要调整图像的大小吗


此外,我还尝试在文件夹中只保留一个图像,但仍然不起作用

Doc,OpenCV似乎无法定位图像。如果使用完整路径而不是相对路径,会发生什么?(那里的三个点是什么?……?)
出于调试目的,请将读回光盘的文件转储到光盘中,我想您会感到惊讶。

您可能有一个无用的jpg,您应该打印文件名并测试它file@EdChum同一个图像在文件夹中运行第一个代码时没有问题。但是当我使用第二个代码时,它显示了错误。你确定该文件夹中没有其他文件吗?您仍应打印完整的文件路径,检查
im
是否为
None
,以及图像的形状。我确信文件夹中没有其他文件。事实上,正如我所说,我检查了图像,而在文件夹中,与第一个代码,它的工作。在第二段代码中,只提到了目录,而不是点“…”只是路径,我在实际代码中使用了完整的C:\users\…\文件名。我在这里用点来表示。此外,我只需在谷歌上搜索“行人”,然后使用任意一张有几个人的随机图像。就像我说的,第一个代码一切正常,问题发生在第二个代码中。