Autor |
Mensaje |
razaAztk
aztk crux
Analista Programador
Registrado: Enero 2010
Mensajes: 340
Edad: 35 Ubicación: Tenochtitlan
|
Problema: Obtener Image De Webcam Con MediaPlayer
Qué tal,
Estoy usando gambas 3.8.4 en Ubuntu 16.04.
Mi intensión es procesar una imagen capturada por una webcam. Hasta ahora (gracias al ejemplo MediaPlayer 1.0.0) puedo ver video en un drawing area usando el componente gb.media con su clase MediaPlayer.
Pero en otro evento (un Timer) quiero, por ahora, mostrar en otro Drawing Area una captura, he probado lo siguiente:
Public Sub Timer1_Timer()
DrawingArea2.Refresh()
End
Public Sub DrawingArea2_Draw()
Dim img As Image
img = $hPlayer.Video.Image
img.Format = "BGRA"
Paint.DrawImage(img, 0, 0, DrawingArea1.W, DrawingArea1.H, 1, Rect(0, 0, img.W, img.H))
End
Pero falla el $hPlayer.Video.Image dándome el mensaje "Unsupported default image format". He probado también a tomar una captura de la webcam con el ejemplo MediaPlayer pero me tira el mismo mensaje.
Alguna idea de qué es lo que pasa? Cómo solventarlo?
De antemano, gracias. Saludos.
|
#1 Lunes, 27 Junio 2016, 01:02 |
|
|
razaAztk
aztk crux
Analista Programador
Registrado: Enero 2010
Mensajes: 340
Edad: 35 Ubicación: Tenochtitlan
|
Re: Problema: Obtener Image De Webcam Con MediaPlayer
Buscando en internet, lo único que obtengo es el código fuente de la clase ( c_media.c ). Me llama la atención lo siguiente:
484 GB_IMG *MEDIA_get_image_from_sample(GstSample *sample, bool convert)
485 {
486 GstSample *temp;
487 GError *err = NULL;
488 GstStructure *s;
489 GstCaps *to_caps, *sample_caps;
490 gint outwidth = 0;
491 gint outheight = 0;
492 GstMemory *memory;
493 GstMapInfo info;
494 const char *format;
495 int gb_format;
496 GB_IMG *img;
497
498 switch (IMAGE.GetDefaultFormat())
499 {
500 case GB_IMAGE_BGRA:
501 format = "BGR";
502 gb_format = GB_IMAGE_BGR;
503 break;
504
505 case GB_IMAGE_RGBA:
506 format = "RGB";
507 gb_format = GB_IMAGE_RGB;
508 break;
509
510 default:
511 GB.Error("Unsupported default image format");
512 return NULL;
513 }
Pero no sé si se puede cambiar el formato de la webcam o tal vez se tendrían que agregar más formatos (el que use la webcam) a dicho método.
última edición por razaAztk el Lunes, 27 Junio 2016, 01:08; editado 1 vez
|
#2 Lunes, 27 Junio 2016, 01:07 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Problema: Obtener Image De Webcam Con MediaPlayer
Ni idea, oiga, pero el tema me interesa. Si lo solucionas de alguna manera no dejes de comunicarlo.
Saludos.
=================== No podemos regresar
|
#3 Lunes, 27 Junio 2016, 08:20 |
|
|
vuott
Analista Programador
Registrado: Agosto 2013
Mensajes: 2086
Edad: 60 Ubicación:
|
Re: Problema: Obtener Image De Webcam Con MediaPlayer
"Return" el formato de una imagen, no "Set" .
Haría falta cambiar el formato de la imagen capturada.
última edición por vuott el Lunes, 27 Junio 2016, 10:31; editado 5 veces
|
#4 Lunes, 27 Junio 2016, 09:58 |
|
|
vuott
Analista Programador
Registrado: Agosto 2013
Mensajes: 2086
Edad: 60 Ubicación:
|
Re: Problema: Obtener Image De Webcam Con MediaPlayer
No se si te puedes ayudar esto:
https://foro.gambas-es.org/show_post.php?p=29565
( https://foro.gambas-es.org/viewtopic.php?f=5&t=5087)
última edición por vuott el Lunes, 27 Junio 2016, 10:52; editado 3 veces
|
#5 Lunes, 27 Junio 2016, 10:49 |
|
|
razaAztk
aztk crux
Analista Programador
Registrado: Enero 2010
Mensajes: 340
Edad: 35 Ubicación: Tenochtitlan
|
Re: Problema: Obtener Image De Webcam Con MediaPlayer
Qué tal,
He realizado lo siguiente:
Me descargué las fuentes de gambas3, y realicé la siguiente búsqueda:
$ grep -lir "Unsupported default image format" ./
./gb.media/src/c_mediaplayer.c
./gb.media/src/c_media.c
Haciendo pruebas, vi que la webcam que estoy usando me daba el formato GB_IMAGE_BGRP (no sé si todas las webcams dan ese formato). Y entonces modifiqué esos dos ficheros:
c_mediaplayer.c: línea 161
switch (IMAGE.GetDefaultFormat())
{
case GB_IMAGE_BGRA:
format = "BGR";
break;
case GB_IMAGE_RGBA:
format = "RGB";
break;
case GB_IMAGE_BGRP: // Agregado formato para webcam
format = "BGR";
break;
default:
GB.Error("Unsupported default image format");
return NULL;
}
c_media.c: línea 498
switch (IMAGE.GetDefaultFormat())
{
case GB_IMAGE_BGRA:
format = "BGR";
gb_format = GB_IMAGE_BGR;
break;
case GB_IMAGE_RGBA:
format = "RGB";
gb_format = GB_IMAGE_RGB;
break;
case GB_IMAGE_BGRP: // Agregado formato para webcam
format = "BGR";
gb_format = GB_IMAGE_BGR;
break;
default:
GB.Error("Unsupported default image format");
return NULL;
}
Compilé e instalé sólo esa librería:
$ cd gb.media
$ reconf
$ ./configure -C
$ make
$ sudo make install
Nota: Son necesarios gstreamer-1.0 gstreamer-video-1.0
Probé el ejemplo que realicé al principio de éste hilo y funcionó correctamente.
Podría alguien, que esté inscrito a la lista de gambas, comentarle a Benoît Minisini si pudiera revisar el componente gb.media para poder capturar imágenes de una webcam (agregando los formatos faltantes).
Con ésto, al menos, puedo seguir avanzando... me falta ver como cambio la resolución de la webcam.
Saludos.
|
#6 Domingo, 14 Agosto 2016, 05:59 |
|
|
vuott
Analista Programador
Registrado: Agosto 2013
Mensajes: 2086
Edad: 60 Ubicación:
|
Re: Problema: Obtener Image De Webcam Con MediaPlayer
Me descargué las fuentes de gambas3
vi que la webcam que estoy usando me daba el formato GB_IMAGE_BGRP
modifiqué esos dos ficheros:
Compilé e instalé sólo esa librería:
Probé el ejemplo que realicé al principio de éste hilo y funcionó correctamente.
Bravissimo !
Muy interesante !
Trabajo admirable.
Muy bueno, razaAztk !
|
#7 Domingo, 14 Agosto 2016, 14:23 |
|
|
v3ctor
Analista Programador
Registrado: May 2013
Mensajes: 1786
Edad: 44 Ubicación: Uruguay
|
Re: Problema: Obtener Image De Webcam Con MediaPlayer
el razateca ta salao jajajaajja
saludos, los observo eee jajjajajaj
=================== Software libre, programación libre, vida libre es la Public function Libertad()as Invendible
Proyectos: VisorRV1960,Taller2015,Tanteador
https://sourceforge.net/u/v3ctor-full/profile/
Blog: http://novatocodegambas.blogspot.com.uy/
|
#8 Domingo, 14 Agosto 2016, 16:21 |
|
|
razaAztk
aztk crux
Analista Programador
Registrado: Enero 2010
Mensajes: 340
Edad: 35 Ubicación: Tenochtitlan
|
Re: Problema: Obtener Image De Webcam Con MediaPlayer
Qué tal,
He estado testeando la webcam con gb.media pero la verdad que no me agrada dicho componente. La verdad me agradaba el anterior que usaba v4l2.
Con gb.media en vez de tomar una Image directo de la webcam, la toma del MediaPlayer. Entonces la resolución cambia en función al tamaño que tenga en ese momento el MediaPlayer; y tampoco he podido especificar la resolución y framerate de la webcam. Ni he visto cómo sobreponer rectángulos al stream.
No sé si no he podido entender bien cómo funciona gb.media o si no está muy orientado a hacer procesamientos con una webcam.
Estoy tentado a seguir realizando mi proyecto con gb.v4l aunque ya esté deprecated.
EDITO:
Por cierto, muchas gracias por sus comentarios shordi, vuott, v3ctor y los demás que vayan opinando.
última edición por razaAztk el Domingo, 14 Agosto 2016, 19:25; editado 1 vez
|
#9 Domingo, 14 Agosto 2016, 19:22 |
|
|
vuott
Analista Programador
Registrado: Agosto 2013
Mensajes: 2086
Edad: 60 Ubicación:
|
Re: Problema: Obtener Image De Webcam Con MediaPlayer
muchas gracias por sus comentarios .....
El tu trabajo es un interesante ejemplo de modificación de un codigo fuente gambas y installación del codigo modificado !
Estoy tentado a seguir realizando mi proyecto con gb.v4l aunque ya esté deprecated.
No llego a comprender como tú puedes utilizar el Componente gb.v4l, si ahora no hay más este Componente en la lista.
última edición por vuott el Domingo, 14 Agosto 2016, 20:41; editado 2 veces
|
#10 Domingo, 14 Agosto 2016, 20:34 |
|
|
|