video_screen / app.py
AlexCool2024's picture
Update app.py
d5d26af verified
raw
history blame
1.94 kB
import streamlit as st
import cv2
import random
import numpy as np
import requests
from PIL import Image
import os
# Функция для извлечения случайного кадра из видео
def get_random_frame(video_file):
cap = cv2.VideoCapture(video_file)
total_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
random_frame_number = random.randint(0, total_frames - 1)
cap.set(cv2.CAP_PROP_POS_FRAMES, random_frame_number)
success, frame = cap.read()
cap.release()
return frame if success else None
# Заголовок приложения
st.title("Video to Text Converter")
# Загрузка видеофайла
uploaded_file = st.file_uploader("Загрузите видео файл...", type=["mp4", "avi"])
if uploaded_file is not None:
frame = get_random_frame(uploaded_file)
if frame is not None:
st.image(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB), caption='Случайный кадр', use_column_width=True)
_, buffer = cv2.imencode('.png', frame)
image_data = buffer.tobytes()
if st.button("Преобразовать в текст"):
model_url = "https://api-inference.huggingface.co/models/nttdataspain/Image-To-Text-Lora-ViT"
headers = {"Authorization": f"Bearer {os.getenv('HUGGINGFACE_TOKEN_READ')}"}
response = requests.post(
model_url,
headers=headers,
files={"file": image_data}
)
if response.status_code == 200:
output_text = response.json().get("generated_text")
st.success(output_text)
else:
st.error("Ошибка при обработке изображения!")
else:
st.error("Не удалось извлечь кадр из видео.")