名称错误:名称';x1和x27;未在OpenCV Python中定义
用于检测对象的我的OpenCV(Python)代码:名称错误:名称';x1和x27;未在OpenCV Python中定义,python,opencv,Python,Opencv,用于检测对象的我的OpenCV(Python)代码: import ... face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') cap1 = cv2.VideoCapture(1) while True: ret1, img1 = cap1.read() gray = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY) faces = fac
import ...
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
cap1 = cv2.VideoCapture(1)
while True:
ret1, img1 = cap1.read()
gray = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
for (x1, y1, w1, h1) in faces:
if x1 >0:
detect_face1 = x1
print 'face distance Camera 1: ', detect_face1
else:
pass
显示
faces
的调试器是类型tuple:()
,可能是因为如果x1>0:NameError:name“x1”未定义,则显示。因为如果在照相机中检测到面,则面
是一个x1值大于0的数组。我知道这可能是一个非常简单的修复,但是非常感谢您的帮助。Tuplefaces
为空,因此出现了namererror
if faces==0:
pass
else:
detect_face=x1
解决了这个问题。如果faces
是一个元组,那么以您的方式对其进行迭代是很奇怪的。要使该循环工作,faces
需要一个元组列表。在开始时,当没有检测到面时,faces
没有x1、y1、w1、h1
的值,因此我猜我得到了这个错误。当检测到人脸时,faces=[10,20,30,40]
(比如说),我的循环就工作了。但当它为空时,我得到了这个错误。我怎样才能克服这个问题@下陷