Проблемы OpenCV в Azure с помощью Django

Итак, странный вопрос для всех вас...

Я работаю над созданием приложения для определения эмоций с использованием OpenCV/Mediapipe в Django.

Сейчас я размещаю его на Azure (он очень простой).

Когда я запускаю приложение, используя

func host start

Он работает на 100% как ожидалось, если я запускаю его, используя

python3 manage.py runserver

Я вижу остальную часть моего приложения, но видео недоступно. И самое странное, что я не вижу никаких ошибок на своей консоли.

camera.py

import cv2
import mediapipe as mp

from mediapipe.python.solutions import drawing_utils, face_mesh

mp_draw = drawing_utils
mp_face_mesh = face_mesh
faceMesh = mp_face_mesh.FaceMesh(max_num_faces=2)
draw_specs = mp_draw.DrawingSpec((255, 0, 0), 1, 1)


class VideoCamera(object):
    def __init__(self):
        self.video = cv2.VideoCapture(0)

    def __del__(self):
        self.video.release()

    def get_frame(self):
        success, image = self.video.read()
        if success:
            rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

        results = faceMesh.process(rgb)
        if results.multi_face_landmarks:
            faces = []

            for face_landmarks in results.multi_face_landmarks:
                mp_draw.draw_landmarks(
                    image, face_landmarks, mp_face_mesh.FACEMESH_CONTOURS, draw_specs, 
                    draw_specs)
                face = []

                for id, lm in enumerate(face_landmarks.landmark):
                    ih, iw, ic = image.shape
                    x, y = int(lm.x * iw), int(lm.y*ih)
                    # cv2.putText(image, str(id), (x, y),
                    #             cv2.FONT_HERSHEY_PLAIN, 1, (255, 0, 0), 1)
                    face.append([x, y])
                faces.append(face)

        frame_flip = cv2.flip(image, 1)
        ret, jpeg = cv2.imencode('.jpg', frame_flip)
        return jpeg.tobytes()

views.py

class HomeView(TemplateView):
    template_name = 'welcome.html'

def gen(camera):
    while True:
        frame = camera.get_frame()
        yield (b'--frame\r\n'
               b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n\r\n')


def video_feed(request):
    camera = VideoCamera()
    return StreamingHttpResponse(gen(camera),
                                 content_type='multipart/x-mixed-replace; 
                                 boundary=frame')

welcome.html

{% extends 'base.html' %}

{% block content %}
    <h1>Welcome to Emotion Recognition!</h1>
    <div style="width:auto;" >
        <img src="{% url 'video_feed' %}" alt="camera feed" width="75%">
    </div>
{% endblock %}

Azure был настроен с помощью расширения VSCode. Я отвечу на любой вопрос, связанный с Azure, как смогу.

Вернуться на верх