Python人脸检测与语音识别代码中条件语句未执行求助
帮你解决条件语句不执行的问题
嘿,我来帮你排查这个问题!从你给出的控制台输出和代码来看,问题其实很明确,咱们一步步来理清楚:
核心问题:条件判断逻辑写错了
你控制台打印的是 faces found: 1,说明检测到的人脸数量是1,但你的条件语句写的是:
if np.all(len(no_priya_face) > 1):
这里有两个错误:
- 数值判断错误:你要的是「检测到人脸就执行」,但现在的条件是「人脸数量大于1」,1显然不满足这个条件,所以语句永远不会触发!应该改成判断「数量大于0」或者「大于等于1」。
- 多余的
np.all():这个函数是用来判断numpy数组里所有元素是否满足条件的,但len()返回的是一个普通整数,用它完全没必要,直接写数值判断就行。
修改后的条件应该是这样的:
if len(no_priya_face) >= 1: # 检测到至少1张priya的脸就执行 print("yes") winsound.PlaySound('how are you.wav', winsound.SND_FILENAME) # 把播放音频放到条件里,才会按需触发 elif len(no_vish_face) >= 1: # 检测到至少1张vish的脸就执行 print("Yes") winsound.PlaySound('how are you.wav', winsound.SND_FILENAME)
顺便提两个代码里的小问题
convertToRGB函数无效:你的函数里写了两个return,第二个永远不会执行,而且不管传入什么图片,都只会转换vish_image的颜色。正确的写法应该是:
def convertToRGB(image): return cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
这样函数会根据传入的图片动态转换颜色。
- 音频播放的位置:你原来的代码里,播放音频的语句在条件外面,不管有没有检测到脸都会播放。如果你的需求是「只有检测到对应人脸才播放音频」,一定要把播放语句放到条件块里面,就像上面修改的那样。
测试建议
修改完条件后再运行程序,你会看到条件里的print语句正常输出,音频也会按照预期触发啦!
内容的提问来源于stack exchange,提问作者vishnesh Vadlakonda
相关产品推荐
相关产品推荐

