У меня есть кнопка «Начать камеру» на моей странице указателя. Если щелкнуть по нему, мне нужно показать канал веб-камеры на той же странице (индекс) и определить лица из видео. «Stop Camera» должна остановить веб-камеру.
$(function() {
$('.start-camera').on("click", function(e){
$(".item-container").html('<img src="/video_feed">');
})
})
urls.py
urlpatterns = [
url(r"^$", views.index, name="index"),
url(r'^admin/', admin.site.urls),
url(r'^video_feed/', views.video_feed, name="video_feed"),
]
views.py
def index(request):
return render(request, "web_app/index.html")
def video_feed(request):
return HttpResponse(gen(VideoCamera()), content_type='multipart/x-mixed-replace; boundary=frame')
Я не упоминаю сценарии python, которые содержат код OpenCV. Эта часть работает правильно. Проблема, с которой я сталкиваюсь:
«video_feed» будет продолжать обслуживать HttpResponse до тех пор, пока не будет нажата «Stop Camera» и не будет удален [img src = "/ video_feed»] из DOM. Но я не могу найти путь назад к index. html и фактически увидеть канал веб-камеры.
Если бы я мог загрузить HttpResponse внутри индекса. html страница, тогда моя проблема будет решена. Но у меня ограниченный опыт работы с Django и я не могу разобраться с этим.
В Flask я могу просто сделать это:
@app.route('/video_feed')
def video_feed():
return Response(gen(VideoCamera()), mimetype='multipart/x-mixed-replace; boundary=frame')
Это сопоставление URL не возвращается представление, но загружает только ответ в текущем индексе. html страница. В Django, когда я регистрирую URL, я также должен определить представление. Могу ли я вызвать video_feed () как функцию из index. html (а не как представление)? Есть ли способ получить канал (непрерывный HttpResponse), не выходя из индекса. html? Можно ли как-то объяснить проблему? Любая помощь будет в значительной степени оценена.