Question: I am using AI Thinker ESP32-CAM with stream url http://192.168.8.100:81/stream. I have tried this and other techniques but nothing worked for me import numpy as np cap = cv2.VideoCapture("rtsp://192.168.8.100:81/stream") while(True): ret, frame = cap.read() cv2.imshow('frame',frame) if cv2.waitKey(1) & 0xFF == ord('q'): break cap.release() cv2.destroyAllWindows()  I've tried http as well instead of rstp but no results at all

Answer: I have used this arduino code #include <esp32cam.h> #include <WebServer.h> #include <WiFi.h> const char* WIFI_SSID = "ZONG MBB-E5573-AE26"; const char* WIFI_PASS = "58688303"; WebServer server(80); static auto loRes = esp32cam::Resolution::find(320, 240); static auto hiRes = esp32cam::Resolution::find(800, 600); void handleBmp() { if (!esp32cam::Camera.changeResolution(loRes)) { Serial.println("SET-LO-RES FAIL"); } auto frame = esp32cam::capture(); if (frame == nullptr) { Serial.println("CAPTURE FAIL"); server.send(503, "", ""); return; } Serial.printf("CAPTURE OK %dx%d %db\n", frame->getWidth(), frame->getHeight(), static_cast<int>(frame->size())); if (!frame->toBmp()) { Serial.println("CONVERT FAIL"); server.send(503, "", ""); return; } Serial.printf("CONVERT OK %dx%d %db\n", frame->getWidth(), frame->getHeight(), static_cast<int>(frame->size())); server.setContentLength(frame->size()); server.send(200, "image/bmp"); WiFiClient client = server.client(); frame->writeTo(client); } void serveJpg() { auto frame = esp32cam::capture(); if (frame == nullptr) { Serial.println("CAPTURE FAIL"); server.send(503, "", ""); return; } Serial.printf("CAPTURE OK %dx%d %db\n", frame->getWidth(), frame->getHeight(), static_cast<int>(frame->size())); server.setContentLength(frame->size()); server.send(200, "image/jpeg"); WiFiClient client = server.client(); frame->writeTo(client); } void handleJpgLo() { if (!esp32cam::Camera.changeResolution(loRes)) { Serial.println("SET-LO-RES FAIL"); } serveJpg(); } void handleJpgHi() { if (!esp32cam::Camera.changeResolution(hiRes)) { Serial.println("SET-HI-RES FAIL"); } serveJpg(); } void handleJpg() { server.sendHeader("Location", "/cam-hi.jpg"); server.send(302, "", ""); } void handleMjpeg() { if (!esp32cam::Camera.changeResolution(hiRes)) { Serial.println("SET-HI-RES FAIL"); } Serial.println("STREAM BEGIN"); WiFiClient client = server.client(); auto startTime = millis(); int res = esp32cam::Camera.streamMjpeg(client); if (res <= 0) { Serial.printf("STREAM ERROR %d\n", res); return; } auto duration = millis() - startTime; Serial.printf("STREAM END %dfrm %0.2ffps\n", res, 1000.0 * res / duration); } void setup() { Serial.begin(115200); Serial.println(); { using namespace esp32cam; Config cfg; cfg.setPins(pins::AiThinker); cfg.setResolution(hiRes); cfg.setBufferCount(2); cfg.setJpeg(80); bool ok = Camera.begin(cfg); Serial.println(ok ? "CAMERA OK" : "CAMERA FAIL"); } WiFi.persistent(false); WiFi.mode(WIFI_STA); WiFi.begin(WIFI_SSID, WIFI_PASS); while (WiFi.status() != WL_CONNECTED) { delay(500); } Serial.print("http://"); Serial.println(WiFi.localIP()); Serial.println(" /cam.bmp"); Serial.println(" /cam-lo.jpg"); Serial.println(" /cam-hi.jpg"); Serial.println(" /cam.mjpeg"); server.on("/cam.bmp", handleBmp); server.on("/cam-lo.jpg", handleJpgLo); server.on("/cam-hi.jpg", handleJpgHi); server.on("/cam.jpg", handleJpg); server.on("/cam.mjpeg", handleMjpeg); server.begin(); } void loop() { server.handleClient(); }  And OpenCV code import urllib import cv2 import numpy as np url='http://192.168.8.100/cam-hi.jpg' while True: imgResp=urllib.request.urlopen(url) imgNp=np.array(bytearray(imgResp.read()),dtype=np.uint8) img=cv2.imdecode(imgNp,-1) # all the opencv processing is done here cv2.imshow('test',img) if ord('q')==cv2.waitKey(10): exit(0)