⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 v4l_linqijun.c

📁 这是一个通过video4linux的支持
💻 C
字号:
/******************************林启俊_V4L_采集****************************************************                                      ****作者: 林启俊                         *      ****日期:  2006-11-30                 *             ****                               *                   ****                             *  ALL RIGHTS Reserved  ****   ***版本: 1.0                        *                 ****环境: Linux                         *         ****                                         ****目的: 为3G手机的现场直播而准备    ***申明: 一切解释权本人作解释;不得修改(除非经本人同意),不得发表!****** e_mail:   linqijun211@163.com**********************************************************************************************人生格言:   为人生理想而战斗,不怕辛苦!! 为报答父母而奋斗,不怕劳累!!                     ******************************************************************************************************************说明: 此程序尽力让V4L简单而写,采用调用函数来实现;希望对学习V4L的朋友有所帮助                         ************     我的摄像头只支持两贞采集,我的想法是,每采集一贞就保存了一个图像;所以我设了两个图像文件           *************      /home/linzi.jpeg和/home/linzicheng.jpeg;用的时候可以随便保存到任何地方的                  *************************   Please email to me if you have some problems or advices to me to modify! than you !!                    ***********/ #include "v4l_linqijun.h"int main(int argc,char **argv){   char *address="";     int frame =0;      int fd; /***********===  Save  the image to the two file =========*************/       FILE *  fp;    FILE *   FP; fp=fopen("/home/linzi.jpeg","w"); FP=fopen("/home/linzicheng.jpeg","w");/*******============从这开始====================*************/   fd=open(DEFAULT,O_RDWR);        if(fd==0)         printf("open success\n");     else     { printf("open failure and open again\n");                   sleep(3);                           //稍等,也许设备没有准备好!        if((fd=open(DEFAULT1,O_RDWR))<0)          {   perror(" open devicen");                         }        else printf("open sucess at second time\n");     }       printf("\t\n-------- Go to get capability-----------\n");    if(lin_get_capability(fd,&capability)==0)      printf(" \tGET video_capability SUCCESS!\n");    printf("\t\n --------Go to get picture---------------\n");            if(lin_get_picture(fd,&picture)==0)         printf("\tGET video_picture SUCCESS !\n");       else             perror(" get video_picture!\n");   printf("\t\n--------GO to set picture-----------------\n");   if(lin_set_picture(fd,&picture)==0)      printf("SET video_picture SUCCESS !\n");   else       perror(" set video_picture!\n");     printf("\t\n----------GO to set window---------------\n");  if(lin_set_window(fd,&window)==0)             printf("SET video_window SUCCESS!\n");  else            printf(" SET video_window error!\n"); printf("\t\n----------------GO to get mbuf-----------------\n");  if(lin_get_mbuf(fd,&mbuf)==0)          printf("SET video_mbuf SUCCESS!\n");  else            printf("SET videio_mbuf error\n"); printf("\t\n-----------------GO to set mmap----------------\n");if(lin_set_mmap(&mmap1)==0)                                                 printf(" SET video_mmap SUCCESS !\n");  else                printf(" SET video_mmap errro\n");  printf("\t\n----------------GO to memory map----------------\n"); if(lin_memory_map(fd,mbuf.size)<0)           printf("memory map failed \n"); else           printf(" memory map SUCCESS \n");printf("\t\n-------------GO TO start capture image----------------\n");  if(lin_start_capture(fd,&mmap1)==0)                                                                      printf("\t\t grabcapture SUCCESS\n");  else        printf("\t\n startcapture FAIL\n");    fprintf(fp,"P6\n%d %d\n255\n",NTSC_WIDTH,NTSC_HEIGHT);    //jpeg文件的头;  fprintf(FP,"P6\n%d %d\n255\n",NTSC_WIDTH,NTSC_HEIGHT);  while(frame<mbuf.frames)  {       address=lin_get_mapaddress(frame);             if( address==(char *)NULL)                  printf(" get mapaddress Failed!\n");    else            printf(" get mapaddress SUCCESS!\n");       if(frame)          {       printf("\t\n #hehe ! this is the first frame captured here,and saved as /home/lin.jpeg...###\n");                fwrite(address,NTSC_WIDTH,3*NTSC_HEIGHT,fp);            }    else   {              printf("\t\n #hehe ! this is the sencond  frame captured here,and saved as /home/linqijun.jpeg...###\n");             fwrite(address,NTSC_WIDTH,3*NTSC_HEIGHT,FP);            }       frame++;                                                                    }return 0;}                  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -