资源简介
完整测试没有任何问题
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include “cam.h“
#include “mutexs.h“
#include “convert.h“
#define REQBUFS_COUNT 4
struct cam_buf {
void *start;
size_t length;
};
struct v4l2_requestbuffers reqbufs;
struct cam_buf bufs[REQBUFS_COUNT];
int camera_init(char *devpath unsigned int *width unsigned int *height unsigned int *size unsigned int *ismjpeg)
{
int i;
int fd = -1;;
int ret;
struct v4l2_buffer vbuf;
struct v4l2_format format;
struct v4l2_capability capability;
/*open 打开设备文件*/
if((fd = open(devpath O_RDWR)) == -1){
perror(“open:“);
return -1;
}
/*ioctl 查看支持的驱动*/
ret = ioctl(fd VIDIOC_QUERYCAP &capability);
if (ret == -1) {
perror(“camera->init“);
return -1;
}
/*判断设备是否支持视频采集*/
if(!(capability.capabilities & V4L2_CAP_VIDEO_CAPTURE)) {
fprintf(stderr “camera->init: device can not support V4L2_CAP_VIDEO_CAPTURE\n“);
close(fd);
return -1;
}
/*判断设备是否支持视频流采集*/
if(!(capability.capabilities & V4L2_CAP_STREAMING)) {
fprintf(stderr “camera->init: device can not support V4L2_CAP_STREAMING\n“);
close(fd);
return -1;
}
/*设置捕获的视频格式 MYJPEG*/
memset(&format 0 sizeof(format));
format.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
format.fmt.pix.pixelformat = V4L2_PIX_FMT_YUYV;
format.fmt.pix.width = *width;
format.fmt.pix.height = *height;
format.fmt.pix.field = V4L2_FIELD_ANY;
ret = ioctl(fd VIDIOC_S_FMT &format);
if(ret == -1) {
perror(“camera init“);
return -1;
} else {
*ismjpeg = 1;
fprintf(stdout “camera->init: picture format is yuyv\n“);
goto get_fmt;
}
/*设置捕获的视频格式 YUYV*/
memset(&format 0 sizeof(format));
format.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; //永远都是这个类型
format.fmt.pix.pixelformat = V4L2_PIX_FMT_MJPEG; //设置采集图片的格式
format.fmt.pix.width = *width;
format.fmt.pix.height = *height;
format.fmt.pix.field = V4L2_FIELD_ANY; //设置图片一行一行的采集
ret = ioctl(fd VIDIOC_S_FMT &format); //ioctl 是设置生效
if(ret == -1)
perror(“camera init“);
else {
fprintf(stdout “camera->init: picture format is mjpeg\n“);
*ismjpeg = 0;
goto get_fmt;
}
get_fmt:
ret = ioctl(fd VIDIOC_G_FMT &format);
if (ret == -1) {
perror(“camera init“);
return -1;
}
/*向驱动申请缓存*/
memset(&reqbufs 0 sizeof(struct v4l2_requestbuffers));
reqbufs.count = REQBUFS_COUNT; //缓存区个数
reqbufs.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
reqbufs.memory = V4L2_MEMORY_MMAP; //设置操作申请缓存的方式:映射 MMAP
ret = ioctl(fd VIDIOC_REQBUFS &reqbufs);
if (ret == -1) {
perror(“camera init“);
close(fd);
return -1;
}
/*循环映射并入队*/
for (i = 0; i < reqbufs.count; i++){
/*真正获取缓存的地址大小*/
memset(&vbuf 0 sizeof(struct v4l2_buffer));
vbuf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
vbuf.memory = V4L2_MEMORY_MMAP;
vbuf.index = i;
ret = ioctl(fd VIDIOC_QUERYBUF &vbuf);
if (ret == -1) {
perror(“camera init“);
close(fd);
return -1;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2017-06-04 11:41 Smarthome_server\
文件 614400 2017-03-07 17:18 Smarthome_server\3.jpg
文件 421 2017-03-10 14:46 Smarthome_server\Makefile
文件 421 2017-03-10 14:46 Smarthome_server\Makefile~
目录 0 2017-03-10 16:41 Smarthome_server\include\
文件 614 2016-11-30 14:29 Smarthome_server\include\cam.h
文件 614 2016-11-30 14:29 Smarthome_server\include\cam.h~
文件 358 2016-11-04 11:02 Smarthome_server\include\convert.h
文件 265 2016-10-25 14:49 Smarthome_server\include\login.h~
文件 175 2017-03-07 15:46 Smarthome_server\include\module.h
文件 175 2017-03-07 15:46 Smarthome_server\include\module.h~
文件 137 2016-11-30 13:24 Smarthome_server\include\mutexs.h
文件 137 2016-11-30 13:24 Smarthome_server\include\mutexs.h~
文件 503 2017-01-12 21:57 Smarthome_server\include\serial.h
文件 634 2016-11-30 16:37 Smarthome_server\include\srv.h~
文件 442 2017-03-07 16:42 Smarthome_server\include\tcp_server.h
文件 442 2017-03-07 16:42 Smarthome_server\include\tcp_server.h~
文件 5077 2016-10-20 14:20 Smarthome_server\include\zgb.h~
文件 188 2017-03-07 17:06 Smarthome_server\include\zigbee.h
文件 188 2017-03-07 17:06 Smarthome_server\include\zigbee.h~
文件 62613 2017-03-10 16:26 Smarthome_server\server
目录 0 2017-03-10 16:41 Smarthome_server\src\
文件 8275 2017-03-10 16:26 Smarthome_server\src\cam.c
文件 8275 2017-03-10 16:26 Smarthome_server\src\cam.c~
文件 8582 2015-11-10 13:54 Smarthome_server\src\convert.c
文件 1741 2016-11-15 16:08 Smarthome_server\src\login.c~
文件 1938 2017-03-10 15:39 Smarthome_server\src\main.c
文件 1938 2017-03-10 15:39 Smarthome_server\src\main.c~
文件 3329 2017-03-10 16:14 Smarthome_server\src\module.c
文件 3329 2017-03-10 16:14 Smarthome_server\src\module.c~
文件 6995 2017-01-12 22:04 Smarthome_server\src\serial.c
............此处省略6个文件信息
相关资源
- Linux c语言 学生成绩管理系统
- Linux开发工具手册
- Linux操作系统下C语言编程从零开始
- 基于Linux下C语言开发的员工管理系统
- 超级玛丽c++源码win32Linux平台
- UNIX/LINUX下C语言中文短信UCS2编码和解
- 嵌入式工程师必知必会 (完整高清中
- linux-2.6.24.rar
- Linux下C语言操作静态ARP表,包括增加
- c语言 linux 贪吃蛇.doc
- Linux多线程服务端编程:使用muduo C+
- libstdc++.so.6.0.23_linux7
- libstdc++-devel-4.1.2-48.el5.x86_64
- C++版仿Linux文件管理系统
- 基于SDL的贪吃蛇游戏
- 链表栈的基本操作(C语言
- 基于linux C/C++和Qt的聊天程序
- C++多线程网络聊天程序
- Linux+gladeGTK++C语言+mysql的模仿QQ聊天工
- 嵌入式linuxC语言程序设计基础教程
- C Programming in Linux Linux下C语言
- 网络编程HttpServer c++实现
- Linux软件工程师(C语言)实用教程_
- linux libstdc++.so.6库
- 基于GEC6818的电子相册和2048小游戏.z
- Linux下C语言FLV文件拆解成h264视频流和
- linux系统下的fit客户端filezilla以及安装
- 经典的编译器gcc2.95.3安装文件已编译
- vnc-4_1_3-x86_linux.tar.gz
- 零点起飞学Linux C编程PPT及习题答案
评论
共有 条评论