Не могу получить доступ к Wi-Fi Cam из OpenCV- Python - PullRequest
1 голос
/ 28 января 2020

Я использую Wi-Fi Cam Esp32-Cam и пытаюсь подключиться к нему с помощью openCv. Код Node-сервера. js позволяет подключаться к модулю по его IP-адресу. Код для сервера. js указан ниже:

СЕРВЕР. JS:

  const path = require('path');
  const express = require('express');
  const WebSocket = require('ws');
  const app = express();

  const WS_PORT  = 8888;
  const HTTP_PORT = 8000;

  const wsServer = new WebSocket.Server({port: WS_PORT}, ()=> console.log(`WS Server is listening at 
  ${WS_PORT}`));

  let connectedClients = [];
  wsServer.on('connection', (ws, req)=>{
  console.log('Connected');
  connectedClients.push(ws);

   ws.on('message', data => {
    connectedClients.forEach((ws,i)=>{
        if(ws.readyState === ws.OPEN){
            ws.send(data);
        }else{
            connectedClients.splice(i ,1);
        }
    })
});
});

app.get('/client',(req,res)=>res.sendFile(path.resolve(__dirname, './client.html')));
app.listen(HTTP_PORT, ()=> console.log(`HTTP server listening at ${HTTP_PORT}`));  

КЛИЕНТ. HTML:

 <html>
<head>
    <title>Client</title>
</head>
<body>
    <img src="">
    <script>
        const img = document.querySelector('img');
        const WS_URL = 'ws:///192.168.1.33:8888';
        const ws = new WebSocket(WS_URL);
        let urlObject;
        ws.onopen = () => console.log(`Connected to ${WS_URL}`);
        ws.onmessage = message => {
            const arrayBuffer = message.data;
            if(urlObject){
                URL.revokeObjectURL(urlObject);
            }
            urlObject = URL.createObjectURL(new Blob([arrayBuffer]));
            img.src = urlObject;
        }
    </script>
</body>

Я могу получить доступ к потоковому видео по адресу "http://192.168.1.33: 8000 / client " через мой браузер, но не через opencv. Вот код в OpenCv python, пытающийся добраться до камеры.

OPENCV CODE:

cap = cv2.VideoCapture('http://192.168.1.33:8000/client')
print(cap.isOpened())  //it prints FALSE
while(True):
    ret, frame = cap.read()
    cv2.imshow('framee',frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
       cv2.destroyAllWindows()
       break

Я не понимаю, почему я не могу получить доступ к камере, так как этот модуль esp32 похож на IP-камеру? Буду признателен за любую помощь.

Спасибо.

...