V4L2拍照程序

本文介绍了如何使用V4L2接口在ZC301P摄像头进行拍照,拍照的图片以JPEG格式保存,并以当前时间命名。通过交叉编译后的cam.c程序在开发板上运行,展示了摄像头支持的格式和参数,拍照后的图片能通过tftp命令传输到电脑查看。
摘要由CSDN通过智能技术生成

由于毕设中用到了摄像头拍照功能,然后网上查了一下,最后自己稍微修改,以当前时间保存为.jpeg格式的图片,最后稍微添加了自己的一些小理解,与大家分享一下。

-----------------------------------------------------------------------------------------------------------------------------------

用的摄像头是ZC301P,已经加载进内核,输出格式是JPEG,大小是640*480,所以后面的图片大小计算的时候是640*480*3。


cam.c:

#include <fcntl.h>
#include <stdlib.h>
#include <sys/mman.h>
#include <linux/videodev2.h>
#include <time.h>
#include <stdio.h>
#include <string.h>

int main(){
  //add by liuzj
  time_t t;
  struct tm *tmp;
  t = time(NULL);
  tmp = localtime(&t);
  char buffer1[30];
  char path[30];
  /end
  int fd = open("/dev/video0",O_RDWR);
  printf("lzj------->>>fd is %d\n",fd);
  //
  struct v4l2_capability cap;
  ioctl(fd,VIDIOC_QUERYCAP,&cap);
  printf("lzj---------->>>>>Driver Name:%s\nCard Name:%s\nBus info:%s\n",cap.driver,cap.card,cap.bus_info);
  //
  struct v4l2_fmtdesc fmtdesc;
  fmtdesc.index = 0; 
  fmtdesc.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
  while(ioctl(fd,VIDIOC_ENUM_FMT,&fmtdesc) != -1){
   printf("lzj-------->>>>>fmtdesc.description is %s\n",fmtdesc.description);
   fmtdesc.index ++;
  }
  //
  struct v4l2_format fmt;
  fmt.type = V4L2_BUF_TYPE_VIDEO
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值