#python #kivy
Вопрос:
Я новичок в Python и создаю виртуального помощника. Это работает нормально, но я хотел бы вставить видео в формате mp4, когда откроется окно Киви. Я пробовал разные способы, но всегда получаю одну и ту же ошибку, что видео не может загрузиться, даже если оно находится в той же папке, что и приложение. это мой код:
#Файл, который выполняет распознавание лиц rec.py:
from types import new_class
import face_recognition as fr
import cv2
from face_recognition.api import face_encodings
import numpy as np
def captura():
cap = True
video_capture = cv2.VideoCapture(0)
daniel = fr.load_image_file("admin/daniel.jpg")
daniel_face_encoding = fr.face_encodings(daniel)[0]
debora = fr.load_image_file("admin/debora.jpg")
debora_face_encoding = fr.face_encodings(debora)[0]
julia = fr.load_image_file("admin/julia.jpg")
julia_face_encoding = fr.face_encodings(julia)[0]
faces_reconhecidas = [
daniel_face_encoding,
debora_face_encoding,
julia_face_encoding
]
nomes_faces_reconhecidas = [
"Daniel",
"Debora",
"Julia"
]
rosto_locations = []
rosto_encodings = []
rostos_nome = []
process_this_frame = True
while cap:
ret, frame = video_capture.read()
small_frame = cv2.resize(frame, (0,0), fx=0.25, fy=0.25)
rgb_small_frame = small_frame[:, :, ::-1]
if process_this_frame:
rosto_locations = fr.face_locations(rgb_small_frame)
rosto_encodings = fr.face_encodings(rgb_small_frame, rosto_locations)
rosto_nomes = []
for rosto_encoding in rosto_encodings:
matches = fr.compare_faces(faces_reconhecidas, rosto_encoding)
nome = "Desconhecido"
rosto_distancia = fr.face_distance(faces_reconhecidas, rosto_encoding)
bmi = np.argmin(rosto_distancia)
if matches[bmi]:
nome = nomes_faces_reconhecidas[bmi]
if nome != "Desconhecido":
rosto_nomes.append(nome)
cap = False
return rosto_nomes
И основной файл
main.py:
class Chamada(BoxLayout):
caminho_navegador = "C:/Program Files/Google/Chrome/Application/chrome.exe %s"
google = 'google.com.br/'
youtube = 'youtube.com/'
name = rec.captura()
lbl = Label(text="")
def speak(audio):
engine = px3.init('sapi5')
voices = engine.getProperty('voices')
engine.setProperty('voice', voices[0].id)
engine.say(audio)
engine.runAndWait()
def ouvindo(self):
hora = int(datetime.datetime.now().hour)
if hora >= 0 and hora < 12:
Chamada.speak('Bom dia {}'.format(Chamada().name))
elif hora >= 12 and hora < 18:
Chamada.speak('Boa tarde {}'.format(Chamada().name))
else:
Chamada.speak('Boa noite {}'.format(Chamada().name))
#Other Methods
....
def takeCommand():
r = sr.Recognizer()
with sr.Microphone() as source:
r.adjust_for_ambient_noise(source)
print("Escutando...")
r.pause_threshold = 1
audio = r.listen(source)
try:
print("Reconhecendo...")
query = r.recognize_google(audio, language='pt')
print("Usuário disse {}n".format(query))
return query
except sr.UnknownValueError:
return "None"
def play_video(self):
video = Video(source='video.mp4')
video.state = 'play'
video.options = {'eos': 'loop'}
video.allow_stretch = True
def Comandos(self, dt):
#while True:
self.size = Window.size
root = self
self.cores('')
#Here is my problem
self.play_video()
query = Chamada.takeCommand().lower()
class Inciar(App):
def build(self):
com = Chamada()
Chamada().ouvindo()
Clock.schedule_interval(com.Comandos, 0.5)
return com
if __name__ == '__main__':
clear = lambda: os.system('cls')
clear()
Inciar().run()
Но каждый раз, когда я запускаю программу, она вызывает ошибку: Ошибка загрузки<video.mp4>, как показано на скриншоте
Но программа по-прежнему работает нормально, только видео, которое не загружается. Я хотел бы, чтобы кто-нибудь мог мне помочь
Ответ №1:
Обязательно импортируйте ffpyplayer
. Это сработало для меня.