- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
linux下V4L2的USB摄像头四幅图像采集
//#Rockie Cheng #include stdio.h #include stdlib.h #include string.h #include assert.h #include getopt.h #include fcntl.h #include unistd.h #include errno.h #include malloc.h #include sys/stat.h #include sys/types.h #include sys/time.h #include sys/mman.h #include sys/ioctl.h #include asm/types.h #include linux/videodev2.h #define CLEAR(x) memset ((x), 0, sizeof (x)) //宏定义清楚 struct buffer { void * start; size_t length; }; //定义一个buffer结构体,这个结构体用于盛放申请到的内存首地址和长度 static char *dev_name = /dev/video0;//摄像头设备名 static int fd = -1; //文件描述符fd struct buffer *buffers = NULL; static unsigned int n_buffers = 0; FILE *file_fd; // static unsigned long file_length; static unsigned char *file_name; //获取一帧数据, static int read_frame (void) { struct v4l2_buffer buf; //用于盛放一帧数据的信息 unsigned int i; CLEAR (buf); buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; buf.memory = V4L2_MEMORY_MMAP; int ff = ioctl (fd, VIDIOC_DQBUF, buf); //从视频缓冲区的输出队列中取得一个已经保存有一帧视频数据的视频缓冲区 if(ff0) printf(failture\n); //出列采集的帧缓冲 assert (buf.index n_buffers); printf (buf.index dq is %d,\n,buf.index); fwrite(buffers[buf.index].start, buffers[buf.index].length, 1, file_fd); //将其写入文件中 ff=ioctl (fd, VIDIOC_QBUF, buf); //再将其入列,投放一个空的视频缓冲区到视频缓冲区输入队列中 if(ff0) printf(failture VIDIOC_QBUF\n); return 1; } //主函数 int main (int argc,char ** argv) { struct v4l2_capability cap; /*储存了硬件的信息,由驱动填写各个元素的值,包含:驱动名称,硬件名称,版本号, 硬件支持的功能:V4L2_CAP_VIDEO_CAPTURE(支持视频捕捉接口)*/ struct v4l2_format fmt; /*流数据的格式, struct v4l2_format { enum v4l2_buf_type type; union { struct v4l2_pix_format pix; // V4L2_BUF_TYPE_VIDEO_CAPTURE包含每幅图片的一行,一列所占的像素个数,width和heigth; //像素格式与压缩类型pixelformat;一幅图像的数据所用的最大字节数imagesize=bytesline*heigth struct v4l2_window win; // V4L2_BUF_TYPE_VIDEO_OVERLAY struct v4l2_vbi_format vbi; // V4L2_BUF_TYPE_VBI_CAPTURE struct v4l2_sliced_vbi_format sliced; // V4L2_BUF_TYPE_SLICED_VBI_CAPTURE __u8 raw_data[200]; // user-defined } fmt; }; */ un
文档评论(0)