AlexCool2024 commited on
Commit
e65e6e5
·
verified ·
1 Parent(s): fafe6cc

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +68 -0
app.py ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import cv2
3
+ import random
4
+ import numpy as np
5
+ import requests
6
+ from PIL import Image
7
+
8
+ # Функция для извлечения случайного кадра из видео
9
+ def get_random_frame(video_file):
10
+ # Открываем видео файл
11
+ cap = cv2.VideoCapture(video_file)
12
+ # Получаем общее количество кадров
13
+ total_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
14
+
15
+ # Генерируем случайный номер кадра
16
+ random_frame_number = random.randint(0, total_frames - 1)
17
+
18
+ # Устанавливаем указатель на случайный кадр
19
+ cap.set(cv2.CAP_PROP_POS_FRAMES, random_frame_number)
20
+ success, frame = cap.read()
21
+
22
+ # Закрываем видеопоток
23
+ cap.release()
24
+
25
+ if success:
26
+ return frame
27
+ else:
28
+ return None
29
+
30
+ # Заголовок приложения
31
+ st.title("Video to Text Converter")
32
+
33
+ # Загрузка видеофайла
34
+ uploaded_file = st.file_uploader("Загрузите видео файл...", type=["mp4", "avi"])
35
+
36
+ if uploaded_file is not None:
37
+ # Извлечение случайного кадра из видео
38
+ frame = get_random_frame(uploaded_file)
39
+
40
+ if frame is not None:
41
+ # Отображение извлечённого кадра
42
+ st.image(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB), caption='Случайный кадр', use_column_width=True)
43
+
44
+ # Сохранение временного изображения для отправки в модель
45
+ _, buffer = cv2.imencode('.png', frame)
46
+ image_data = buffer.tobytes()
47
+
48
+ # Обработка изображения с помощью модели
49
+ if st.button("Преобразовать в текст"):
50
+ # Здесь должен быть URL вашей модели
51
+ model_url = "https://api-inference.huggingface.co/models/nttdataspain/Image-To-Text-Lora-ViT"
52
+ headers = {"Authorization": "Bearer YOUR_HUGGINGFACE_API_TOKEN"} # Замените на ваш токен
53
+
54
+ # Отправка запроса к модели
55
+ response = requests.post(
56
+ model_url,
57
+ headers=headers,
58
+ files={"file": image_data}
59
+ )
60
+
61
+ if response.status_code == 200:
62
+ # Отображаем сгенерированный текст
63
+ output_text = response.json().get("generated_text")
64
+ st.success(output_text)
65
+ else:
66
+ st.error("Ошибка при обработке изображения!")
67
+ else:
68
+ st.error("Не удалось извлечь кадр из видео.")