资源简介
参考博客地址:http://blog.csdn.net/fendoubasaonian
环境:
1、一个支持MJPG格式的usb摄像头
2、支持V4L2的linux环境
实现:
1、从摄像头读取一帧MJPG图片
2、将MJPG图片保存到本地

代码片段和文件信息
/*
* V4L2 video capture example
*
* This program can be used and distributed without restrictions.
*/
#include
#include
#include
#include
#include /* getopt_long() */
#include /* low-level i/o */
#include
#include
#include
#include
#include
#include
#include
#include
#include /* for videodev2.h */
#include
#define CLEAR(x) memset (&(x) 0 sizeof (x))
typedef enum {
IO_METHOD_READ
IO_METHOD_MMAP
IO_METHOD_USERPTR
} io_method;
struct buffer {
void * start;
size_t length;
};
static char * dev_name = NULL;
static io_method io = IO_METHOD_MMAP;
static int fd = -1;
struct buffer * buffers = NULL;
static unsigned int n_buffers = 0;
static void errno_exit(const char * s)
{
fprintf (stderr “%s error %d %s\n“
s errno strerror (errno));
exit (EXIT_FAILURE);
}
static int xioctl(int fdint requestvoid * arg)
{
int r;
do r = ioctl (fd request arg);
while (-1 == r && EINTR == errno);
return r;
}
static void process_image(const void * p)
{
fputc (‘.‘ stdout);
fflush (stdout);
}
//从内核缓冲区取出一帧数据
static int read_frame(void)
{
//2015.12.12_18:33:zhou_add
// static int i = 0;
//end
struct v4l2_buffer buf;
unsigned int i;
switch (io)
{
case IO_METHOD_READ:
if (-1 == read (fd buffers[0].start buffers[0].length))
{
switch (errno)
{
case EAGAIN:
return 0;
case EIO:
/* Could ignore EIO see spec. */
/* fall through */
default:
errno_exit (“read“);
}
}
process_image (buffers[0].start);
break;
case IO_METHOD_MMAP:
CLEAR (buf);
buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
buf.memory = V4L2_MEMORY_MMAP;
/*从内核环形缓冲区取出一帧数据*/
if (-1 == xioctl (fd VIDIOC_DQBUF &buf)) {
switch (errno) {
case EAGAIN:
return 0;
case EIO:
/* Could ignore EIO see spec. */
/* fall through */
default:
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 20525 2015-12-13 20:08 v4l2.c
文件 61593 2015-12-12 16:19 v4l2.h
- 上一篇:3GPP技术标准中文版
- 下一篇:flash as.0 翻牌游戏源文件
相关资源
- 基于V4L2的视频采集,能够采集YUVJPE
- 使用RTMPdump(libRTMP)直播来自v4l2的摄
- qt5_V4L2_Camera 实现摄像头实时画面显示
- v4l2中文手册(规范)全五章(包含驱
- USB摄像头通过v4l2技术采集、储存视频
- V4L2采集YUYV数据x264编码成H264视频
- linux下关于Qt界面的摄像头v4l2操作源码
- linux+QT下基于RTP协议的实时视频传输客
- v4l2采集+yuyv转yuv420p+h264编码+tcp传输
- linux+qt+v4l2 摄像头视频捕捉--源代码
- Linux下使用Qt+V4L2测试UVC相机
- 基于v4l2的qt视频实时显示
- v4l2 USB摄像头图像采集程序C
- linux下基于V4L2/Qt的usb摄像头采集显示
- linux qt4.7 v4l2 YUV(YUYV) mmap 显示视频
- V4L2 通过JRTPLIB 实现RTP实时视频传输并
- singleCamD
- MAX9286的V4L2测试代码
- webcam_v4l2_x264
- 嵌入式平台ARm9使用V4L2格式摄像头抓帧
- linux下基于QT和v4l2驱动的USB摄像头视频
- 智能家居的项目用的 V4L2
- v4l2采集视频并保存和lcd显示
- v4l2 QT MJPEG格式 视频采集+屏幕显示+图
- 使用Linux的V4L2读取摄像头数据+Opencv图
- v4l2 qt实时显示摄像头数据未使用ope
- V4L2视频采集与h264编码
- linux下v4l2实现图片采集
- 基于QT的V4L2摄像头视频采集并显示
- tiny4412 + qtopia + v4l2 + usb camera
评论
共有 条评论