Python 在从另一个.py文件调用的函数中使用cv2.detectMultiScale()时出错
这是我在这里的第一个问题,所以我希望我以正确的方式提问 我正在使用Windows 10的笔记本电脑上运行Python 3.6.3(Anaconda 64位安装) 我有一个主要的例程,其中包括通过cv2.VideoCapture()捕获视频。另一个文件存储执行人脸检测的功能。从主程序调用函数时,我收到以下错误消息: 错误:(-215)!函数cv::CascadeClassifier::detectMultiScale中的空() 以下是代码的简化版本: 主程序: 我已经搜索了这个错误,据我所知,这是由于没有以numpy.array格式提供给cv2.detectMultiScale()的适当图像造成的。因此,我尝试进一步简化代码以隔离错误: 主要程序: 当我运行这个简化版本的代码时,不会出现错误,但是,尽管每次迭代都会打印出正确的数组,但是使用cv2.imshow()创建的窗口会显示一个灰色图像Python 在从另一个.py文件调用的函数中使用cv2.detectMultiScale()时出错,python,opencv,Python,Opencv,这是我在这里的第一个问题,所以我希望我以正确的方式提问 我正在使用Windows 10的笔记本电脑上运行Python 3.6.3(Anaconda 64位安装) 我有一个主要的例程,其中包括通过cv2.VideoCapture()捕获视频。另一个文件存储执行人脸检测的功能。从主程序调用函数时,我收到以下错误消息: 错误:(-215)!函数cv::CascadeClassifier::detectMultiScale中的空() 以下是代码的简化版本: 主程序: 我已经搜索了这个错误,据我所知,这是
我非常感谢你的帮助。提前多谢 您需要修复简化版本
函数
而不是文件
cv2.waitKey(1)
x
from file import function
import cv2
cap = cv2.VideoCapture(0)
x = 0
while x<300:
ret, frame = cap.read()
output = function(ret, frame)
cv2.imshow("window", output)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
print(output)
x += 1
cv2.destroyAllWindows()
cap.release()
从文件导入功能
进口cv2
cap=cv2.视频捕获(0)
x=0
虽然X非常火爆!!!,这解决了简化版本中的问题。我在第一个例程中发现了错误,它与detectMultiScale()无关。问题是cv2.CascadeClassifier()调用的xml文件不在指定的路径中。
def facecounter(frame, ret):
import cv2
face_classifier = cv2.CascadeClassifier('cascades/haarcascade_frontalface_default.xml
if ret is True:
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
faces = face_classifier.detectMultiScale(gray, 1.3, 5)
number_faces = len(faces)
return number_faces
from file import function
import cv2
cap = cv2.VideoCapture(0)
x = 0
while x<300:
ret, frame = cap.read()
output = file(ret, frame)
cv2.imshow("window", output)
print(output)
cv2.destroyAllWindows()
cap.release()
import cv2
def function(ret, frame):
output = frame
return output
from file import function
import cv2
cap = cv2.VideoCapture(0)
x = 0
while x<300:
ret, frame = cap.read()
output = function(ret, frame)
cv2.imshow("window", output)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
print(output)
x += 1
cv2.destroyAllWindows()
cap.release()