ImageVerifierCode 换一换
格式:DOCX , 页数:25 ,大小:21.37KB ,
资源ID:12015443      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12015443.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(摄像头V4L程序经典.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

摄像头V4L程序经典.docx

1、摄像头V4L程序经典camera.c程序代码#include #include #include #include #include #include #include #include #define ERR_FRAME_BUFFER 1#define ERR_VIDEO_OPEN 2#define ERR_VIDEO_GCAP 3#define ERR_VIDEO_GPIC 4#define ERR_VIDEO_SPIC 5#define ERR_SYNC 6#define ERR_FRAME_USING 7#define ERR_GET_FRAME 8typedef struct _fb

2、_v4l / FrameBuffer 信息 int fbfd ; / FrameBuffer设备句柄 struct fb_var_screeninfo vinfo; / FrameBuffer屏幕可变的信息 struct fb_fix_screeninfo finfo; / FrameBuffer固定不变的信息 char *fbp; / FrameBuffer 内存指针 / video4linux信息 int fd; / struct video_capability capability; / struct video_buffer buffer; / struct video_window

3、 window; / struct video_channel channel8; / struct video_picture picture; / struct video_tuner tuner; / struct video_audio audio8; / struct video_mmap mmap; / struct video_mbuf mbuf; / unsigned char *map; int frame_current;/what s the frame number being captured currently? int frame_usingVIDEO_MAX_F

4、RAME;/帧的状态没有采集还是等待结束?fb_v41; #define DEFAULT_PALETTE VIDEO_PALETTE_RGB565 #define FB_FILE /dev/fb/0/V4L_FILE /dev/video0/Zhaoyang Modified /#define V4L_FILE /dev/v4l/video0 /我的板子video0已被占据/*struct video_mmap unsigned int frame; Frame (0 - n) for double buffer int height,width; unsigned int format; s

5、hould be VIDEO_PALETTE_* ;struct video_mbuf int size; Total memory to map int frames; Frames int offsetsVIDEO_MAX_FRAME; /32; */* Function name: get_grab_frame* Descriptions: 获取图像帧,该函数调用了VIDIOCMCAPTURE的ioctl,获取一帧图片* Input: *vd,参数指针* frame,帧号* Output : 无* Created by:* Created Date: *-* Modified by:*

6、Modified Date: *-*/int get_grab_frame(fb_v41 *vd, int frame) /如果正在采集中 if (vd-frame_usingframe) fprintf(stderr, get_grab_frame: frame %d is already used.n, frame); return ERR_FRAME_USING; vd-mmap.frame = frame; /* Start Picture capture from this moment /*/ if (ioctl(vd-fd, VIDIOCMCAPTURE, &(vd-mmap)

7、frame_usingframe = 1; vd-frame_current = frame; return 0; /* Function name: get_next_frame* Descriptions: 获取下一帧的图像* Input: *vd ,参数指针* Output : 无* Created by:* Created Date: *-* Modified by:* Modified Date: *-*/int get_first_frame(fb_v41 *vd) int ret; vd-frame_current = 0; ret = get_grab_frame( vd, 0

8、 ); if ( retfd, VIDIOCSYNC, &(vd-frame_current) frame_usingvd-frame_current = 0 ; return (0); /* Function name: get_next_frame* Descriptions: 获取下一帧的图像* Input: *vd ,参数指针* Output : 返回0表示正常完成返回。* Created by:* Created Date: *-* Modified by:* Modified Date: *-*/int get_next_frame(fb_v41 *vd) int ret; vd-

9、frame_current = 1;/两帧采集不是0就是1 ret = get_grab_frame( vd,vd-frame_current); / 获取图像数据 if( ret fd, VIDIOCSYNC, &(vd-frame_current) frame_usingvd-frame_current = 0 ;/采集完毕置0 return 0; /* Function name: get_frame_address* Descriptions: 获取帧地址.调用该函数可以获取当前帧的缓冲地址* Input: *vd ,参数指针* Output : 返回帧图像数据的指针地址.* Crea

10、ted by:* Created Date: *-* Modified by:* Modified Date: *-*/unsigned char *get_frame_address(fb_v41 *vd) return (vd-map + vd-mbuf.offsetsvd-frame_current); / 从MAP内存中找到当前帧的起始指针 /* Function name: rgb_to_framebuffer* Descriptions: 写图像数据到Framebuffer,使用该函数前必须成功执行open_framebuffer函数.* Input: *vd ,参数指针* wid

11、th,图像的宽度vd-mmap.width* height,图像高度* xoffset,图在Framebuffer X轴偏移量vd-vinfo.xoffset* yoffset,图在Framebuffer Y轴偏移量* *img_ptr,即将写进FrameBuffer缓冲区指针* Output : 无* Created by:* Created Date: *-* Modified by:* Modified Date: * vd-finfo.line_length* -* | yoffset |* | xoffset * |* | |* | |* -*-*/void rgb_to_frame

12、buffer( fb_v41 *vd, / int width,int height, / 图像大小 int xoffset,int yoffset, / 图像在Framebuffer偏移位置 unsigned short *img_ptr ) / 图像数据指针 int x,y; int location; unsigned short *loca_ptr; / Figure out where in memory to put the pixel for ( y = 0; y finfo.line_length; loca_ptr = (unsigned short *) (vd-fbp +

13、 location); for ( x = 0; x width; x+ ) / 行扫描 *(loca_ptr + x) = *img_ptr+; /*void rgb_to_framebuffer( fb_v41 *vd, / int width,int height, / 图像大小 int xoffset,int yoffset, / 图像在Framebuffer偏移位置 unsigned short int *img_ptr ) / 图像数据指针 int x,y; int location; / Figure out where in memory to put the pixel fo

14、r ( y = 0; y height; y+ ) / 纵扫描 for ( x = 0; x finfo.line_length; *(unsigned short int*)(vd-fbp + location ) = *img_ptr+; */ /* Function name: open_framebuffer* Descriptions: 该函数用于初始化FrameBuffer设备,在该函数中打开FrameBuffer设备,并将设备影射到内存* Input: *ptr,打开Framebuffer设备路径指针* *vd ,参数指针* Output : 返回非0值表示出错* Created

15、 by:* Created Date: *-* Modified by:* Modified Date: *-*/int open_framebuffer(char *ptr,fb_v41 *vd) int fbfd,screensize; / Open the file for reading and writing fbfd = open( ptr, O_RDWR); if (fbfd fbfd = fbfd; / 保存打开FrameBuffer设备的句柄 / Get fixed screen information 获取FrameBuffer固定不变的信息 if (ioctl(fbfd,

16、 FBIOGET_FSCREENINFO, &vd-finfo) printf(Error reading fixed information.n); return ERR_FRAME_BUFFER; / Get variable screen information 获取FrameBuffer屏幕可变的信息 if (ioctl(fbfd, FBIOGET_VSCREENINFO, &vd-vinfo) printf(Error reading variable information.n); return ERR_FRAME_BUFFER; printf(%dx%d, %dbpp, xoff

17、set=%d ,yoffset=%d n, vd-vinfo.xres, vd-vinfo.yres, vd-vinfo.bits_per_pixel,vd-vinfo.xoffset,vd-vinfo.yoffset ); / Figure out the size of the screen in bytes screensize = vd-vinfo.xres * vd-vinfo.yres * vd-vinfo.bits_per_pixel / 8; / Map the device to memory vd-fbp = (char *)mmap(0,screensize,PROT_R

18、EAD|PROT_WRITE,MAP_SHARED,fbfd,0); / 影射Framebuffer设备到内存 if (int)vd-fbp = -1) printf(Error: failed to map framebuffer device to memory.n); return ERR_FRAME_BUFFER; printf(The framebuffer device was mapped to memory successfully.n); return 0; /* Function name: open_video* Descriptions: 通过该函数初始化视频设备* Input: *fileptr,打开的文件名指针* *vd,参数指针* dep,像素深度* pal,调色板* width,宽度* height,高度* Output : 无* Created by:* Created Date: *-* Modified by:* Modified Date: *-

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1