资源简介
参考博客地址: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 翻牌游戏源文件
相关资源
- 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
- Linux Media Subsystem Documentation
- 冒死上传公司车载设备源码 支持gp
- V4L2+FFMPEG+live555实现流媒体服务端
- LINUX下采集视频数据并编码为H264项目
- Linux 下V4l2摄像头采集图片,实现yuy
- linux v4l2视频采集教程
- TI OMAP3 ISP驱动整体框架、流程整理分
- 基于V4l2的uvc摄像头视频录像代码avi
- linux下v4l2视频采集源代码
- Linux 下 v4l2 和 Qt 连接usb摄像头
- UVC驱动抓图测试程序--基于V4L2
评论
共有 条评论