Используя инфраструктуру FastAPI, я написал программу, которая принимает живое видео с веб-камеры и показывает его во внешнем интерфейсе с помощью функции image_feed. Каждый кадр обрабатывается функцией, а именноprocess_image(img, Scale=0.35). С помощью этой функции он обновляет глобальный фрейм данных df.
Когда этот процесс завершается, прямая трансляция останавливается, задавая state.live = False. Затем функция вызывает /upload_df, которая должна преобразовать df в таблицу HTML и отобразить ее во внешнем интерфейсе HTML. (С помощью команды печати я проверил успешность преобразования таблицы HTML).
Однако программа не отображает df во внешнем интерфейсе. Вместо этого отображается следующее сообщение об ошибке:
"INFO: 127.0.0.1:1527 - "POST /upload_df HTTP/1.1" 405 Метод не разрешен
Запрос к /upload_df: {'detail': 'Метод не разрешен'}"
Что происходит и как это исправить? Я использую pycharm в Windows.
app = FastAPI()
app.mount("/static", StaticFiles(directory="static"), name="static")
templates = Jinja2Templates(directory="templates")
html_file = "upload11.html"
class FeedState:
live = True # If True, stream live video; if False, show last processed frame
last_processed_frame = None # Store the last processed image
lock = Lock() # To ensure thread safety when accessing the state
state = FeedState()
df = pd.DataFrame(columns=["A", "B", "TF \n(+ve)","TF \n(-ve)","QA \n(+ve)","QA \n(-ve)"])
def process_image(img, scale=0.35):
global df
#
with state.lock:
state.live = False
try:
print("Video feed stopped. Now calling upload_df function")
response = requests.post("http://127.0.0.1:8000/upload_df")
print("Request to /upload_df:", response.json())
except Exception as e:
print("Error sending POST request to /upload_df:", e)
return
@app.get("/upload_df", response_class=HTMLResponse)
async def upload_df(request: Request):
global df
# Convert DataFrame to HTML with styling
df_html = df.to_html(classes="table table-bordered", escape=False)
return templates.TemplateResponse(html_file, {"request": request, "df_html": df_html})
@app.get("/image_feed")
def image_feed():
def generate_images():
cap = cv2.VideoCapture(0) # Open the default webcam
if not cap.isOpened():
raise RuntimeError("Could not access the webcam.")
ret, last_img = cap.read()
while True:
if state.live:
ret, img = cap.read()
last_img=process_image(img)
_, buffer = cv2.imencode(".jpg", last_img)
frame_bytes = buffer.tobytes()
yield (
b"--frame\r\n"
b"Content-Type: image/jpeg\r\n\r\n" + frame_bytes + b"\r\n")
return StreamingResponse(generate_images(), media_type="multipart/x-mixed-replace; boundary=frame")
@app.get("/", response_class=HTMLResponse)
async def read_root():
return templates.TemplateResponse(html_file, {"request": {}})
def open_browser():
webbrowser.open("http://127.0.0.1:8000")
if __name__ == "__main__":
# Run the browser-opening function in a separate thread
threading.Thread(target=open_browser).start()
# Start the Uvicorn server
uvicorn.run("webInterface11:app", host="127.0.0.1", port=8000, reload=True)
Подробнее здесь: https://stackoverflow.com/questions/793 ... owed-error
POST /upload_df HTTP/1.1" 405 Ошибка метода не разрешена ⇐ Python
Программы на Python
-
Anonymous
1735286474
Anonymous
Используя инфраструктуру FastAPI, я написал программу, которая принимает живое видео с веб-камеры и показывает его во внешнем интерфейсе с помощью функции image_feed. Каждый кадр обрабатывается функцией, а именноprocess_image(img, Scale=0.35). С помощью этой функции он обновляет глобальный фрейм данных df.
Когда этот процесс завершается, прямая трансляция останавливается, задавая state.live = False. Затем функция вызывает /upload_df, которая должна преобразовать df в таблицу HTML и отобразить ее во внешнем интерфейсе HTML. (С помощью команды печати я проверил успешность преобразования таблицы HTML).
Однако программа не отображает df во внешнем интерфейсе. Вместо этого отображается следующее сообщение об ошибке:
"INFO: 127.0.0.1:1527 - "POST /upload_df HTTP/1.1" 405 Метод не разрешен
Запрос к /upload_df: {'detail': 'Метод не разрешен'}"
Что происходит и как это исправить? Я использую pycharm в Windows.
app = FastAPI()
app.mount("/static", StaticFiles(directory="static"), name="static")
templates = Jinja2Templates(directory="templates")
html_file = "upload11.html"
class FeedState:
live = True # If True, stream live video; if False, show last processed frame
last_processed_frame = None # Store the last processed image
lock = Lock() # To ensure thread safety when accessing the state
state = FeedState()
df = pd.DataFrame(columns=["A", "B", "TF \n(+ve)","TF \n(-ve)","QA \n(+ve)","QA \n(-ve)"])
def process_image(img, scale=0.35):
global df
#
with state.lock:
state.live = False
try:
print("Video feed stopped. Now calling upload_df function")
response = requests.post("http://127.0.0.1:8000/upload_df")
print("Request to /upload_df:", response.json())
except Exception as e:
print("Error sending POST request to /upload_df:", e)
return
@app.get("/upload_df", response_class=HTMLResponse)
async def upload_df(request: Request):
global df
# Convert DataFrame to HTML with styling
df_html = df.to_html(classes="table table-bordered", escape=False)
return templates.TemplateResponse(html_file, {"request": request, "df_html": df_html})
@app.get("/image_feed")
def image_feed():
def generate_images():
cap = cv2.VideoCapture(0) # Open the default webcam
if not cap.isOpened():
raise RuntimeError("Could not access the webcam.")
ret, last_img = cap.read()
while True:
if state.live:
ret, img = cap.read()
last_img=process_image(img)
_, buffer = cv2.imencode(".jpg", last_img)
frame_bytes = buffer.tobytes()
yield (
b"--frame\r\n"
b"Content-Type: image/jpeg\r\n\r\n" + frame_bytes + b"\r\n")
return StreamingResponse(generate_images(), media_type="multipart/x-mixed-replace; boundary=frame")
@app.get("/", response_class=HTMLResponse)
async def read_root():
return templates.TemplateResponse(html_file, {"request": {}})
def open_browser():
webbrowser.open("http://127.0.0.1:8000")
if __name__ == "__main__":
# Run the browser-opening function in a separate thread
threading.Thread(target=open_browser).start()
# Start the Uvicorn server
uvicorn.run("webInterface11:app", host="127.0.0.1", port=8000, reload=True)
Подробнее здесь: [url]https://stackoverflow.com/questions/79311253/post-upload-df-http-1-1-405-method-not-allowed-error[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия