linux 3.6.移植教程,linux3.6.6移植usb-camera(ZC0301PLH)

本文介绍了如何在Linux环境下利用ZC3XXUSB摄像头驱动来捕获图像。首先,展示了插入UVC摄像头后的系统响应。然后,提供了一个C语言程序,该程序打开/dev/video0设备,设置图像格式,并读取一帧数据保存为JPEG图片。程序成功执行后,会在当前目录下生成名为test.jpg的图片文件。最后,提及了友坚公司推出的Exynos4412四核ARM开发板的相关信息。
摘要由CSDN通过智能技术生成

   ZC3XX USB Camera Driver

插入USB摄像头(我使用的UVC摄像头),会提示:

usb 1-1: new full-speed USB device number 7 using s3c2410-ohci

usb 1-1: New USB device found, idVendor=0ac8, idProduct=303b

usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0

usb 1-1: Product: PC Camera

usb 1-1: Manufacturer: Vimicro Corp.

gspca_main: gspca_zc3xx-2.14.0 probing 0ac8:303b

input: gspca_zc3xx as /devices/platform/s3c2410-ohci/usb1/1-1/input/input3

查看设备:

[root@urbetter /]# ls dev/video0

dev/video0

2、测试:

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

}

编译:

# arm-linux-gcc usb_camera.c -o usb_camera

拷贝到文件系统中运行即可,在当前目录下就能看到test.jpg的图片!

友坚已经推出了exynos4412,四核的arm开发板!有兴趣的朋友可关注下哦~价格有优惠~~~~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值