Cómo utilizar Video4Linux para obtener datos de la cámara
El controlador de cámara más utilizado para Linux es spca5xx. El sitio web también proporciona los tipos de cámaras admitidas por el controlador. Además, el chip ov511 es compatible con Linux directamente, así como con cámaras web para chips de usuario como el mesh V2000. Utilicé la cámara web para el mesh V2000 y la cámara web para el chip Z-Star
301p+Hyundai 7131R. Este último requiere el controlador spca5xx. Hay mucha información sobre cómo instalar spca5xx en Internet, por lo que no entraré en detalles aquí.
2. Depuración de la cámara
Después de instalar la cámara, puede utilizar algún software para probar si la cámara puede funcionar normalmente. Un software muy conocido es xawtv, que puedes buscar y descargar online. Una vez completada la instalación, abra xawtv para depurar la cámara.
3.Programación de Video4Linux para obtener datos
Actualmente existen dos versiones de video4linux: v4l y v4l2. Este artículo presenta principalmente la programación v4l. El uso de la API v4l para obtener imágenes de vídeo generalmente implica los siguientes pasos:
a> Abrir el dispositivo
b> Establecer las propiedades del dispositivo, como el brillo y el contraste del image
c> Establezca el formato de transmisión y el modo de transmisión
d> Comience a transmitir datos, generalmente transmitiendo datos continuamente en un bucle.
e>Apagar el dispositivo
A continuación se describe el proceso de programación v4l. Primero, tenga en cuenta que la programación en video4linux incluye archivos de encabezado, que contienen estructuras de datos de video4linux y definiciones de funciones.
1) Estructura de datos de v4l
La siguiente estructura de datos está definida en la API video4linux. Para una definición detallada de la estructura de datos, puede consultar la documentación de la API v4l. es un resumen de las estructuras de datos comunes en la programación. Explicación de las estructuras de datos utilizadas.
Primero, definimos una estructura de datos que describe el dispositivo, que contiene todas las estructuras de datos definidas en v4l:
typedef struct
_v4ldevice
{int fd;//número de dispositivo
capacidad de struct video_capability;
struct
video_channel canal[10];
struct video_picture imagen;
struct video_clip
clip;
struct video_window
struct video_window
{int fd; /número de dispositivo
{int fd;//número de dispositivo p>struct video_window window;
struct video_capture capture;
struct
búfer video_buffer;
struct video_mmap mmap;
struct video_mbuf
mbuf
struct video_unit unit; unsigned char
*map; //primera dirección de los datos cuando se obtienen datos en forma mmap
pthread_ mutex_t mutex;
int frame;
int
framestat[2];
int overlay;
}v4ldevice;
La siguiente es la estructura de datos anterior Contiene una explicación de las estructuras de datos y sus definiciones.
* estructura
video_capability
nombre[32] El nombre canónico de esta interfaz
tipo
interfaz Tipo
canales Número de canales de radio/TV (si corresponde)
audios
Número de dispositivos de audio (si corresponde)
ancho máximo Ancho máximo de captura (Unidad: Gigabit)
maxwidth Ancho máximo de captura (Unidad: Gigabit)
maxwidth...