Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';t从OpenCV Python访问Wifi摄像头_Python_Node.js_Opencv_Esp32 - Fatal编程技术网

Can';t从OpenCV Python访问Wifi摄像头

Can';t从OpenCV Python访问Wifi摄像头,python,node.js,opencv,esp32,Python,Node.js,Opencv,Esp32,我正在使用一个名为Esp32 Cam的Wifi摄像头,并试图用openCv连接到它。Node server.js代码可以通过模块的IP地址连接到模块。server.js的代码如下所示: SERVER.JS: const path = require('path'); const express = require('express'); const WebSocket = require('ws'); const app = express(); const WS_PORT

我正在使用一个名为Esp32 Cam的Wifi摄像头,并试图用openCv连接到它。Node server.js代码可以通过模块的IP地址连接到模块。server.js的代码如下所示:

SERVER.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}`));  
CLİENT.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>
我不明白为什么我不能访问摄像头,因为这个esp32模块就像一个IP摄像头?我将感谢任何帮助


谢谢。

nodejs可以工作,因为它是作为web套接字运行的。但是您的openCV是作为http服务器运行的。对吗?很抱歉,我不能理解这一点,但我不知道是否有其他方法可以从OpenCV访问此模块。我真的很感激你的建议。nodejs可以工作,因为它是作为一个web套接字运行的。但是您的openCV是作为http服务器运行的。对吗?很抱歉,我不能理解这一点,但我不知道是否有其他方法可以从OpenCV访问此模块。我真的很感激你的建议。
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