Вывод: совпадений не найдено.Python

Программы на Python
Anonymous
Вывод: совпадений не найдено.

Сообщение Anonymous »


Я работаю над приложением для Android, которое преобразует текст в соответствующее видео, и использую для этого Python и Java. Видео хранятся в каталоге ресурсов студии Android. Модель обращается к каталогу активов, но не считывает данные. Вот мой код #питон импортировать cv2 импортировать numpy как np импортное пространство импортировать нлтк из nltk.corpus импортировать Wordnet из цепочки импорта itertools импортировать ОС время импорта

AssetManager = Python.getPlatform().getApplication().getAssets()

nltk.download('wordnet')
Загрузить языковую модель SpaCy
nlp = spacy.load("en_core_web_sm")
Функция для обработки текста и объединения видео
defprocess_text_and_generate_video(input_text, assets_manager, context):

word='' # Токенизация с использованием пробела документ = nlp(input_text) # Инициализируем словарь для сопоставления тегов POS pos_dict = {"СУЩЕСТВИТЕЛЬНОЕ": "существительное", "ГЛАГОЛ": "глагол", "ADJ": "прил", "ADV": "adv", "PRON": "pron", "ADP": "adp" } # Массив для хранения видеокадров кадры = [] # Перебираем токенизированные результаты spacy для токена в документе: слово = токен.текст pos_tag = токен.pos_ если pos_tag в pos_dict: пытаться: # Скопируйте видеофайл из ресурсов во временный каталог file_path = f"assets/{word}.mp4" print(f"Пытаюсь открыть файл: {file_path}") с assets_manager.open(file_path) в качестве fd: temp_file_path = os.path.join(context.getCacheDir(), f"{word}.mp4") с open(temp_file_path, 'wb') как out: out.write(fd.read())

# Считываем видеокадры в числовой массив cap = cv2.VideoCapture(temp_file_path) ret, кадр = cap.read() если возврат: фреймы.append(кадр) кроме исключения как e: print(f"Произошло исключение: {e}") еще: # Получите синонимы слова синонимы = wordnet.synsets(слово) синонимы = set(chain.from_iterable([word.lemma_names() для слова в синонимах])) # Проверяем, есть ли у какого-либо синонима соответствующее видео в каталоге для синонима в синонимах: пытаться: # Скопируйте видеофайл из ресурсов во временный каталог file_path = f"assets/{synonym}.mp4" print(f"Пытаюсь открыть файл: {file_path}") с assets_manager.open(file_path) в качестве fd: temp_file_path = os.path.join(context.getCacheDir(), f"{синоним}.mp4") с open(temp_file_path, 'wb') как out: out.write(fd.read()) # Чтение видеокадров в массив numpy cap = cv2.VideoCapture(temp_file_path) ret, кадр = cap.read() если возврат: фреймы.append(кадр) перерыв кроме исключения как e: print(f"Произошло исключение: {e}") # Если по слову или его синонимам видео не найдено, ищите видео, соответствующие каждой букве слова. если нет кадров: for Letter в word.lower(): # Преобразование в нижний регистр, поскольку имена файлов написаны строчными буквами. пытаться: # Скопируйте видеофайл из ресурсов во временный каталог file_path = f"assets/{letter}.mp4" print(f"Пытаюсь открыть файл: {file_path}") с assets_manager.open(file_path) в качестве fd: temp_file_path = os.path.join(context.getCacheDir(), f"{letter}.mp4") с open(temp_file_path, 'wb') как out: out.write(fd.read()) # Чтение видеокадров в массив numpy cap = cv2.VideoCapture(temp_file_path) ret, кадр = cap.read() если возврат: фреймы.append(кадр) кроме исключения как e: print(f"Произошло исключение: {e}") # Если видео вообще не найдено, выведите сообщение и верните None. если нет кадров: print("Совпадение не найдено") возврат Нет # Объединить видеокадры. Final_clip = np.concatenate (кадры) # Экспортируйте объединенное видео с помощью cv2.VideoWriter(). fourcc = cv2.VideoWriter_fourcc(*'MP4V') height, width, _ = Final_clip[0].shape # получаем ширину и высоту первого кадра выходной_файл_путь = os.path.join(context.getFilesDir(), 'my_concatenation.mp4') out = cv2.VideoWriter(output_file_path, fourcc, 30.0, (ширина, высота)) для кадра в Final_clip: out.write(кадр) out.release() время.сон(1) вернуть выходной_путь_файла, если os.path.exists(output_file_path) иначе Нет ...Ява

пакет com.example.myapplication_fyppsl;

импортировать android.content.Context;

импортировать android.os.AsyncTask;

импортировать android.widget.MediaController;

импортировать android.widget.Toast;

импортировать android.widget.VideoView;

импортировать com.chaquo.python.PyObject;

импортировать com.chaquo.python.Python;

импортировать java.io.IOException;

публичный класс VideoProcessingTask расширяет AsyncTask {

private VideoView videoView; частный контекст контекста; public VideoProcessingTask (VideoView videoView, контекст контекста) { this.videoView = videoView; this.context = контекст; } @Override protected String doInBackground(String... strings) { Строковый ввод = строки [0]; Python py = Python.getInstance(); PyObject pyf = py.getModule("displayAnimation"); пытаться { String[] files = context.getAssets().list(""); for(Имя строки: файлы) { System.out.println("Файл: " + имя); } } catch (IOException e) { е.printStackTrace(); } // передаем AssetManager и получаем путь к созданному файлу. PyObject obj = pyf.callAttr("process_text_and_generate_video", input, context.getAssets(), context); // Проверяем, имеет ли obj значение null перед вызовом toString() вернуть объект == ноль? ноль: obj.toString(); } @Override protected void onPostExecute (результат String) { super.onPostExecute(результат); // Проверяем, равен ли результат «Нет», прежде чем пытаться установить путь к видео если (результат == ноль) { Toast.makeText(context, «По вашему запросу видео не найдено.», Toast.LENGTH_SHORT).show(); возвращаться; } // Установите путь к видео или URI из результата метода doInBackground. videoView.setVideoPath(результат); // Создаем MediaController и прикрепляем его к VideoView MediaController mediaController = новый MediaController (контекст); mediaController.setAnchorView(videoView); // Прикрепляем MediaController к VideoView videoView.setMediaController(mediaController); // Запускаем просмотр видео видеоView.start(); }

Я перепробовал множество способов выяснить, что пошло не так, но так и не смог этого найти.
[*]Проверьте все разрешения [*]Путь [*]Формат видео [*]Название видео [*]Конфигурация Gradle

Вернуться в «Python»