那些年啊,那些事—V4L2採集圖片源碼分享

來源:互聯網
上載者:User


把v4l2採集圖片測試程式,貼在這和大家共用,在此基礎上可以使實現視頻的採集,只不過在pc機上寫個上位機進行顯示或者直接寫個Qt在開發板上顯示即可,

,,,,,,,,,,,,,,


採集效果如下:


源碼如下:

#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;};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 timeval 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;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.