visual rostros reconocimiento movimiento libreria facial detector deteccion con camara artificial abrir c# stream ip picturebox

rostros - login con reconocimiento facial c#



Transmisión desde la cámara IP C# (2)

¿El camUrl devuelve una imagen?

Intenta depurar sr = webRes.GetResponseStream() y si no es nulo, prueba image.Invalidate() o image.Update()

Más información sobre invalidar, actualizar y actualizar

Tengo el siguiente código que no funciona. Mi enlace camUrl funciona si lo cargo en Firefox y las transmisiones desde mi cámara, pero no aparece nada en mi cuadro de imagen en tiempo de ejecución. ¿Alguna idea de por qué?

public Thread _camThread; private string camUrl = "http://my-domain-ip:2080/videostream.cgi?user=admin&pwd=password"; public HttpWebRequest webReq; public WebResponse webRes; public Stream sr; private void btnStart_Click(object sender, EventArgs e) { if (_camThread == null) _camThread = new Thread(new ThreadStart(RunCam)); _camThread.Start(); } private void RunCam() { try { webReq = (HttpWebRequest)WebRequest.Create(camUrl); webReq.AllowWriteStreamBuffering = true; webReq.Timeout = 20000; using (webRes = webReq.GetResponse()) { while ((sr = webRes.GetResponseStream()) != null) { image.Image = Image.FromStream(sr); } } } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void btnStop_Click(object sender, EventArgs e) { if (_camThread.IsAlive) { _camThread.Abort(); _camThread = null; } }


Parece que su ciclo de lectura del flujo de respuesta es incorrecto. Solo obtiene una secuencia de una respuesta y tendrá múltiples imágenes en ella.

Es probable que no pueda pasar directamente la secuencia de respuesta a Image.FromStream; las imágenes probablemente estén codificadas en una respuesta de varias partes que separa las imágenes con delimitadores textuales. Puede obtener más información sobre el formato de respuestas de varias partes en RFC2046 .

using (webRes = webReq.GetResponse()) { using (sr = webRes.GetResponseStream()) { // continuously read images from the response stream until error while (true) { try { // note: the line below probably won''t work, you may need to parse // the next image from the multi-part response stream manually image.Image = Image.FromStream(sr); // if the above doesn''t work, then do something like this: // var imageBytes = ParseNextImage(sr); // var memoryStream = new MemoryStream(imageBytes); // image.Image = Image.FromStream(memoryStream); } catch(Exception e) { Console.WriteLine("Aborting read from response stream due to error {0}", e); break; } } } }