python не читает условное утверждение? - PullRequest
0 голосов
/ 09 февраля 2020
import cv2
import numpy as np
import speech_recognition as sr
import winsound
from time import sleep

vish_image = cv2.imread(r'C:\Users\priyanka\Pictures\Camera Roll\WIN_20200209_13_14_33_Pro.jpg')
vish_image_gray = cv2.cvtColor(vish_image, cv2.COLOR_BGR2GRAY)
priya_image = cv2.imread(r'C:\Users\priyanka\Desktop\harr cascade\p\s.jpg')
priya_image_gray = cv2.cvtColor(priya_image, cv2.COLOR_BGR2GRAY)
def convertToRGB(image):
    return cv2.cvtColor(vish_image, cv2.COLOR_BGR2RGB)
    return cv2.cvtColor(priya_image, cv2.COLOR_BGR2RGB)

priya = cv2.CascadeClassifier('C:/Users/priyanka/Desktop/harr cascade/classifier/cascade.xml')
vish = cv2.CascadeClassifier('C:/Users/priyanka/Desktop/harr cascade/vishneshv_frontal_face.xml')
vish_face = vish.detectMultiScale(vish_image_gray, scaleFactor = 1.05, minNeighbors = 7)
priya_face = priya.detectMultiScale(priya_image_gray, scaleFactor = 1.01, minNeighbors = 1)
no_vish_face = vish_face
no_priya_face = priya_face
r = sr.Recognizer()

print("faces found: "+str(len(no_vish_face)))
print("faces found: "+str(len(no_priya_face)))

if np.all(len(no_priya_face) > 1):
    print("yes")
elif np.all(len(no_vish_face) > 1):
    print("Yes")

sleep(1)    
winsound.PlaySound('how are you.wav', winsound.SND_FILENAME)
sleep(0.5)
with sr.Microphone() as source:
    audio_data = r.record(source, duration=5)
    print("Recognizing...")
    text = r.recognize_google(audio_data, language ="en-AU")
    print(text)

if 'good' in text:
    winsound.PlaySound('i too feel good.wav', winsound.SND_FILENAME)
elif 'bad' in text:
    winsound.PlaySound('that is okay.wav', winsound.SND_FILENAME)

for(x,y,w,h)in vish_face:
    vish_img = cv2.rectangle(vish_image,(x,y),(x+w,y+h),(255,0,0),2)
for(x,y,w,h)in priya_face:
    img = cv2.rectangle(priya_image,(x,y),(x+w,y+h),(255,0,0),2)

img = cv2.resize(vish_image, None, fx=0.5, fy=0.5, interpolation=cv2.INTER_AREA)


cv2.imshow('test_image',vish_img)
cv2.imshow('hello_image',img)

Так перепробовал много вещей из inte rnet, но все равно не повезло. Я учусь в начальной школе и занимаюсь машинным обучением. Надеюсь, ты поможешь мне. Приведенное выше условное утверждение, что воспроизведение звука не воспроизводилось, и я подумал, что это проблема с файлом WAV, я воспроизвел его в новом файле python, к счастью, это сработало, поэтому я добавил функцию печати, чтобы проверить, работают ли они. , Я узнал, что это была проблема с размещением условного оператора, но я не уверен, в чем была ошибка.

На консоли отображается:

faces found: 1
faces found: 1

Затем записи

1 Ответ

0 голосов
/ 18 февраля 2020

Причиной сбоя оператора условия является само условие. если вы присмотритесь,
длина no_vish_face и no_priya_face точно равна 1.

if np.all(len(no_priya_face) > 1):   # 1 > 1 --> condition False 
    print("yes")
elif np.all(len(no_vish_face) > 1):  # # 1 > 1 --> condition False 
    print("Yes") 

вам также нужно изменить свой код,

if np.all(len(no_priya_face) >= 1):   # 1 >= 1 --> condition True 
    print("yes")
elif np.all(len(no_vish_face) >= 1):  # # 1 >= 1 --> condition True 
    print("Yes") 
...