Как транслировать запись с вебкамеры через OpenCV cv2 в GUI Python EEL на HTML

у меня есть код OpenCV который работает через терминал и снимает через вебкамеру.

Мне нужно сделать что бы это работало в приложении GUI EEL Python

Соответственно там используется JS для работы которое совмещается с Python кодом.

У меня не получается запихать код Python где написана работа камеры OpenCV в HTML с использованием JS для работы GUI EEL

По сути простыми словами мне нужно сделать что бы съемка вебки транслировалась на HTML с использованием я так понимаю JS (JS не знаю) , учитывая все параметры которые я описал выше.

как это можно сделать? если ли какие то ещё способы?

Из кода что сделано у меня:

main.py

import eel
import numpy as np
import face_recognition
import cv2
import os
from datetime import datetime

eel.init('PO')

path = 'faces'
images = []
classNames = []
myList = os.listdir(path)

@eel.expose
def cameraa():
    for cls in myList:
        curImg = cv2.imread(f'{path}/{cls}')
        images.append(curImg)
        classNames.append(os.path.splitext(cls)[0])
    def findEncodings(images):
        encodeList = []
        for img in images:
            img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
            encode = face_recognition.face_encodings(img)[0]
            encodeList.append(encode)
        return encodeList
    encodeListKnown = findEncodings(images)
    cap = cv2.VideoCapture(0)
    while True:
        success, img = cap.read()
        imgS = cv2.resize(img, (0, 0), None, 0.25, 0.25)
        imgS = cv2.cvtColor(imgS, cv2.COLOR_BGR2RGB)

        facesCurFrame = face_recognition.face_locations(imgS)
        encodeCurFrame = face_recognition.face_encodings(imgS, facesCurFrame)

        for encodeFace, faceLoc in zip(encodeCurFrame, facesCurFrame):
            matches = face_recognition.compare_faces(encodeListKnown, encodeFace)
            faceDis = face_recognition.face_distance(encodeListKnown, encodeFace)
            matchIndex = np.argmin(faceDis)

            if matches[matchIndex]:
                name = classNames[matchIndex]
                y1, x2, y2, x1 = faceLoc
                y1, x2, y2, x1 = y1 * 4, x2 * 4, y2 * 4, x1 * 4
                cv2.rectangle(img, (x1, y1), (x2, y2), (208, 224, 64), 2)
                cv2.rectangle(img, (x1, y2 - 35), (x2, y2), (208, 224, 64), cv2.FILLED)
                cv2.putText(img, name, (x1 + 6, y2 - 6), cv2.FONT_HERSHEY_COMPLEX, 1, (0, 0, 0), 2)

        cv2.imshow("Cam", img)
        cv2.waitKey(1)

eel.start('main.html', size=(1000,700))

main.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>main</title>
    <script src="eel.js"></script>
    <link rel='stylesheet' href="css/style.css">
  </head>
  <body>
    <center>
      <video id="vid" autoplay></video>

    <button id="btn1" class="button">Data</button>

    <script>


    let video = document.getElementById('vid');
    navigator.mediaDevices
    .getUserMedia({
      video: {width: 400, height: 400}
      })
      .then((stream) => {
        video.srcObject = stream;

      });
      let res = await eel.cameraa();
      document.getElementById('video').innerHTML = res
    }


    </script>


  </body>
</html>

Ответы (0 шт):