设为首页 加入收藏

TOP

V4L2摄像头获取单幅图片测试程序
2014-11-24 07:51:33 来源: 作者: 【 】 浏览:0
Tags:V4L2 摄像头 获取 单幅 图片 测试 程序

#根据网上常见的一个测试程序修改而来 by rockie cheng
#include
#include
#include
#include


#include


#include
#include
#include
#include
#include
#include
#include
#include
#include


#include
#include


#define CLEAR(x) memset (&(x), 0, sizeof (x))


struct buffer {
void * start;
size_t length;
};


static char * dev_name = "/dev/video0";
static int fd = -1;
struct buffer * buffers = NULL;


FILE *file_fd;
static unsigned long file_length;
static unsigned char *file_name;


int main (int argc,char ** argv)
{
struct v4l2_capability cap;
struct v4l2_format fmt;


file_fd = fopen("test.jpg", "w");


fd = open (dev_name, O_RDWR /* required */ | O_NONBLOCK, 0);


ioctl (fd, VIDIOC_QUERYCAP, &cap);


CLEAR (fmt);
fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
fmt.fmt.pix.width = 640;
fmt.fmt.pix.height = 480;
fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_YUYV;
fmt.fmt.pix.field = V4L2_FIELD_INTERLACED;
ioctl (fd, VIDIOC_S_FMT, &fmt);


file_length = fmt.fmt.pix.bytesperline * fmt.fmt.pix.height;


buffers = calloc (1, sizeof (*buffers));


buffers[0].length = file_length;
buffers[0].start = malloc (file_length);


for (;;)
{
fd_set fds;
struct timeva l tv;
int r;


FD_ZERO (&fds);
FD_SET (fd, &fds);


/* Timeout. */
tv.tv_sec = 3;
tv.tv_usec = 0;


r = select (fd + 1, &fds, NULL, NULL, &tv);


if (-1 == r) {
if (EINTR == errno)
continue;
printf ("select");
}


if (0 == r) {
fprintf (stderr, "select timeout\n");
exit (EXIT_FAILURE);
}


if (read (fd, buffers[0].start, buffers[0].length))
break;
}


fwrite(buffers[0].start, buffers[0].length, 1, file_fd);


free (buffers[0].start);
close (fd);
fclose (file_fd);
exit (EXIT_SUCCESS);
return 0;
}



】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇V4L2摄像头获取单幅图片测试程序.. 下一篇基于Linux的v4l2视频架构驱动编写

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·在 Redis 中如何查看 (2025-12-26 03:19:03)
·Redis在实际应用中, (2025-12-26 03:19:01)
·Redis配置中`require (2025-12-26 03:18:58)
·Asus Armoury Crate (2025-12-26 02:52:33)
·WindowsFX (LinuxFX) (2025-12-26 02:52:30)