亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? capture.cc

?? linux下的視頻捕捉和處理CMVision2.0-beta1.rar
?? CC
字號:
/*=========================================================================    capture.cc  -------------------------------------------------------------------------    Example code for video capture under Video4Linux II  -------------------------------------------------------------------------    Copyright 1999, 2000    Anna Helena Reali Costa, James R. Bruce    School of Computer Science    Carnegie Mellon University  -------------------------------------------------------------------------    This source code is distributed "as is" with absolutely no warranty.    See LICENSE, which should be included with this distribution.  -------------------------------------------------------------------------    Revision History:      2000-02-05:  Ported to work with V4L2 API      1999-11-23:  Quick C++ port to simplify & wrap in an object (jbruce)       1999-05-01:  Initial version (annar)  =========================================================================*/#include "capture.h"//==== Capture Class Implementation =======================================//void grabSetFps(int fd, int fps){  struct v4l2_streamparm params;  //printf("called v4l2_set_fps with fps=%d\n",fps);  params.type = V4L2_BUF_TYPE_CAPTURE;  ioctl(fd, VIDIOC_G_PARM, &params);  //printf("time per frame is: %ld\n", params.parm.capture.timeperframe);  params.parm.capture.capturemode |= V4L2_CAP_TIMEPERFRAME;  params.parm.capture.timeperframe = 10000000 / fps;  if (fps == 30)    params.parm.capture.timeperframe = 333667;  // printf("time per frame is: %ld\n", params.parm.capture.timeperframe);  ioctl(fd, VIDIOC_S_PARM, &params);    params.parm.capture.timeperframe = 0;  ioctl(fd, VIDIOC_G_PARM, &params);  // printf("time per frame is: %ld\n", params.parm.capture.timeperframe);  }bool capture::initialize(char *device,int nwidth,int nheight,int nfmt){  struct v4l2_requestbuffers req;  int err;  int i;  // Set defaults if not given  if(!device) device = DEFAULT_VIDEO_DEVICE;  if(!nfmt) nfmt = DEFAULT_VIDEO_FORMAT;  if(!nwidth || !nheight){    nwidth  = DEFAULT_IMAGE_WIDTH;    nheight = DEFAULT_IMAGE_HEIGHT;  }  // Open the video device  vid_fd = open(device, O_RDONLY);  if(vid_fd == -1){    printf("Could not open video device [%s]\n",device);    return(false);  }  fmt.type = V4L2_BUF_TYPE_CAPTURE;  err = ioctl(vid_fd, VIDIOC_G_FMT, &fmt);  if(err){    printf("G_FMT returned error %d\n",errno);    return(false);  }  // Set video format  fmt.fmt.pix.width = nwidth;  fmt.fmt.pix.height = nheight;  fmt.fmt.pix.pixelformat = nfmt;  if(true){    // attempt double framerate    fmt.fmt.pix.flags = V4L2_FMT_FLAG_TOPFIELD; // |V4L2_FMT_FLAG_BOTFIELD;    /*    fmt.fmt.pix.flags = (fmt.fmt.pix.flags |			 V4L2_FMT_FLAG_TOPFIELD | V4L2_FMT_FLAG_BOTFIELD) &                         ~V4L2_FMT_FLAG_INTERLACED;    */  }else{    fmt.fmt.pix.flags = fmt.fmt.pix.flags | V4L2_FMT_FLAG_INTERLACED;  }  err = ioctl(vid_fd, VIDIOC_S_FMT, &fmt);  if(err){    printf("S_FMT returned error %d\n",errno);    perror("S_FMT:");    return(false);  }  // grabSetFps(vid_fd, 30);  // Request mmap-able capture buffers  req.count = STREAMBUFS;  req.type  = V4L2_BUF_TYPE_CAPTURE;  err = ioctl(vid_fd, VIDIOC_REQBUFS, &req);  if(err < 0 || req.count < 1){    printf("REQBUFS returned error %d, count %d\n",	   errno,req.count);    return(false);  }  for(i=0; i<req.count; i++){    vimage[i].vidbuf.index = i;    vimage[i].vidbuf.type = V4L2_BUF_TYPE_CAPTURE;    err = ioctl(vid_fd, VIDIOC_QUERYBUF, &vimage[i].vidbuf);    if(err < 0){      printf("QUERYBUF returned error %d\n",errno);      return(false);    }    vimage[i].data = (char*)mmap(0, vimage[i].vidbuf.length, PROT_READ,			  MAP_SHARED, vid_fd, 			  vimage[i].vidbuf.offset);    if((int)vimage[i].data == -1){      printf("mmap() returned error %d\n", errno);      return(false);    }  }  for(i=0; i<req.count; i++){    if((err = ioctl(vid_fd, VIDIOC_QBUF, &vimage[i].vidbuf))){      printf("1QBUF returned error %d\n",errno);      perror("QBUF error");      return(false);    }  }  // Turn on streaming capture  err = ioctl(vid_fd, VIDIOC_STREAMON, &vimage[0].vidbuf.type);  if(err){    printf("STREAMON returned error %d\n",errno);    return(false);  }  width   = nwidth;  height  = nheight;  current = NULL;  return(true);}void capture::close(){  int i,t;  if(vid_fd >= 0){    t = V4L2_BUF_TYPE_CAPTURE;    ioctl(vid_fd, VIDIOC_STREAMOFF, &t);    for(i=0; i<STREAMBUFS; i++){      if(vimage[i].data){        munmap(vimage[i].data,vimage[i].vidbuf.length);      }    }  }}unsigned char *capture::captureFrame(int &index,int &field){  //if(captured_frame){  //  printf("there may be a problem capturing frame w/o releasing previous frame");  //}  // struct v4l2_buffer tempbuf;  int err;  fd_set          rdset;  struct timeval  timeout;  int		  n;  struct v4l2_buffer tempbuf;  FD_ZERO(&rdset);  FD_SET(vid_fd, &rdset);  timeout.tv_sec = 1;  timeout.tv_usec = 0;  n = select(vid_fd + 1, &rdset, NULL, NULL, &timeout);  err = -1;  if (n == -1) {    fprintf(stderr, "select error.\n");    perror("select msg:");  }  else if (n == 0)    fprintf(stderr, "select timeout\n");  else if (FD_ISSET(vid_fd, &rdset))    err = 0;  if(err) return(NULL);  // Grab last frame  do {    //printf("D");    tempbuf.type = vimage[0].vidbuf.type;    err = ioctl(vid_fd, VIDIOC_DQBUF, &tempbuf);    if(err) {      printf("4DQBUF returned error %d\n",errno);      perror("DQBUF error:");    }    //printf("S");    FD_ZERO(&rdset);    FD_SET(vid_fd, &rdset);    timeout.tv_sec = 0;    timeout.tv_usec = 0;    n = select(vid_fd + 1, &rdset, NULL, NULL, &timeout);    // Uncomment this next line to see how many frames are being skipped.    // 1=frame skipped, 0=frame used    //printf("n%d",n);    if(n==-1) {      fprintf(stderr, "select error.\n");      perror("2select msg:");    }    else if(n==0)      break;    if (!FD_ISSET(vid_fd, &rdset))      printf("huh\n");    //printf("Q");    err = ioctl(vid_fd, VIDIOC_QBUF, &tempbuf);    if(err) {      printf("3QBUF returned error %d\n",errno);      perror("QBUF error:");    }  } while(true);  field = 0;  if(tempbuf.flags & V4L2_BUF_FLAG_TOPFIELD) field = 1;  if(tempbuf.flags & V4L2_BUF_FLAG_BOTFIELD) field = 0;  // Set current to point to captured frame data  current = (unsigned char *)vimage[tempbuf.index].data;  timestamp = tempbuf.timestamp;  index = tempbuf.index;  // gettimeofday(&timeout,NULL);  // timestamp = (stamp_t)((timeout.tv_sec + timeout.tv_usec/1.0E6) * 1.0E9);  // printf("field: %d\n",field);  // Initiate the next capture  //tempbuf.index = (++index - 1) % STREAMBUFS;  //err = ioctl(vid_fd, VIDIOC_QBUF, &tempbuf);  //if(err) printf("QBUF returned error %d\n",errno);    captured_frame = true;  return(current);}void capture::releaseFrame(unsigned char* frame, int index){  int err;  struct v4l2_buffer tempbuf;  //if(frame != current){  //  printf("frame != current, possibly releasing the wrong frame.");  //}  captured_frame = false;  // Initiate the next capture  tempbuf.type = vimage[0].vidbuf.type;  tempbuf.index=index;  //printf("%lx %d\n",tempbuf.type,tempbuf.index);  err = ioctl(vid_fd, VIDIOC_QBUF, &tempbuf);  if(err) {    printf("2QBUF returned error %d\n",errno);    perror("QBUF error:");  }}struct v4l2_buffer tempbuf;unsigned char *capture::captureFrame(){  // struct v4l2_buffer tempbuf;  int err;  fd_set          rdset;  struct timeval  timeout;  int		  n;  FD_ZERO(&rdset);  FD_SET(vid_fd, &rdset);  timeout.tv_sec = 1;  timeout.tv_usec = 0;  n = select(vid_fd + 1, &rdset, NULL, NULL, &timeout);  err = -1;  if (n == -1)    fprintf(stderr, "select error.\n");  else if (n == 0)    fprintf(stderr, "select timeout\n");  else if (FD_ISSET(vid_fd, &rdset))    err = 0;  if(err) return(NULL);  // Grab last frame  tempbuf.type = vimage[0].vidbuf.type;  err = ioctl(vid_fd, VIDIOC_DQBUF, &tempbuf);  if(err) printf("DQBUF returned error %d\n",errno);  // Set current to point to captured frame data  current = (unsigned char *)vimage[tempbuf.index].data;  timestamp = tempbuf.timestamp;  // Initiate the next capture  err = ioctl(vid_fd, VIDIOC_QBUF, &tempbuf);  if(err) printf("QBUF returned error %d\n",errno);  return(current);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品第一国产综合野| 极品少妇xxxx精品少妇| 免费成人av在线播放| 国内欧美视频一区二区| 一本色道久久综合亚洲精品按摩| 911精品产国品一二三产区| 亚洲国产精品v| 久久福利视频一区二区| 9久草视频在线视频精品| 日韩精品中文字幕一区二区三区 | 久久久久99精品一区| 亚洲成人av一区| 99国内精品久久| 久久久久久久一区| 日本亚洲视频在线| 欧美视频一区在线| 亚洲欧美日韩一区二区| 国产一区激情在线| 日韩一区二区三区视频| 亚洲va天堂va国产va久| 91高清在线观看| 亚洲色图都市小说| 成人国产电影网| 国产日韩欧美一区二区三区综合| 蜜臀av一级做a爰片久久| 欧美在线不卡视频| 亚洲伦理在线免费看| 成人免费视频免费观看| 精品国产乱码久久久久久影片| 欧美经典一区二区三区| 国产在线播放一区| 欧美一区二区黄| 亚洲精品国产第一综合99久久 | 成人一级视频在线观看| 日韩免费视频一区| 亚洲一级二级三级在线免费观看| 国产成人综合自拍| 久久综合av免费| 亚洲成人动漫在线观看| 91美女在线看| 日本一区二区不卡视频| 极品美女销魂一区二区三区| 日韩亚洲欧美综合| 午夜久久久久久久久久一区二区| av高清久久久| 亚洲国产经典视频| 成人精品gif动图一区| 亚洲精品一区二区三区影院| 依依成人精品视频| 欧美日韩免费一区二区三区视频| 亚洲男人的天堂一区二区| aaa国产一区| 亚洲精品视频免费观看| 成人国产在线观看| 1区2区3区国产精品| 懂色一区二区三区免费观看| 国产视频一区二区在线| 国产一区 二区| 久久久久99精品一区| 国产成人精品免费网站| 久久精品一级爱片| 成人动漫一区二区| 一区二区在线观看免费| 欧洲视频一区二区| 一区二区三区精密机械公司| 欧美综合在线视频| 日韩黄色免费网站| 亚洲国产经典视频| 国产欧美日韩激情| 国产麻豆9l精品三级站| 在线观看日韩高清av| 欧美日韩另类国产亚洲欧美一级| 久久精品综合网| 精品女同一区二区| 国产精品久久久久影院老司| 美女一区二区视频| 4hu四虎永久在线影院成人| 精品国产免费一区二区三区香蕉| 亚洲成av人综合在线观看| 成人动漫一区二区| 欧美一区二区三区性视频| 日韩欧美国产不卡| 精品粉嫩aⅴ一区二区三区四区 | 精品国产欧美一区二区| 国产精品成人在线观看| 奇米一区二区三区| 成人动漫一区二区在线| 欧美最猛性xxxxx直播| 久久综合九色综合欧美98| 精品乱人伦一区二区三区| 在线看不卡av| 欧美高清激情brazzers| 欧美mv和日韩mv的网站| 一区二区三区波多野结衣在线观看| 一区二区三区日韩精品| av一区二区三区四区| 日本va欧美va精品发布| 懂色av一区二区在线播放| 日韩美女在线视频| 青草国产精品久久久久久| 欧美色图第一页| 国产欧美日韩激情| 欧美二区三区的天堂| 国产精品一级在线| 国产伦精品一区二区三区免费迷| 91年精品国产| 狠狠久久亚洲欧美| 一区二区三区日韩欧美精品| 精品福利一区二区三区| 91成人免费网站| 狠狠色丁香婷婷综合| 亚洲精品你懂的| 欧美—级在线免费片| 91精品国产麻豆国产自产在线 | 丁香另类激情小说| 五月婷婷久久综合| 中文字幕一区二区三区精华液| 精品日韩一区二区三区| 欧美性受xxxx黑人xyx性爽| 成人av网在线| 国产电影一区二区三区| 日韩成人精品在线| 一区二区三区电影在线播| 国产精品天美传媒| 久久久久久亚洲综合| 制服丝袜日韩国产| 欧美剧情电影在线观看完整版免费励志电影 | 午夜av一区二区| 夜夜嗨av一区二区三区网页 | 在线综合视频播放| 欧美午夜精品免费| 欧美性猛交xxxx乱大交退制版 | 亚洲一二三四区| 国产精品视频免费看| 日韩精品影音先锋| 日韩亚洲欧美高清| 欧美va在线播放| 日韩欧美国产一区二区在线播放 | 九九国产精品视频| 精品一区二区三区的国产在线播放| 亚洲不卡在线观看| 肉肉av福利一精品导航| 日韩精品五月天| 美女性感视频久久| 国产在线视频一区二区| 日韩成人午夜精品| 蜜桃精品视频在线观看| 国产一区福利在线| 成年人午夜久久久| 色视频欧美一区二区三区| 欧美中文字幕一区二区三区| 色综合久久天天| 欧美三级视频在线观看| 欧美精品第一页| 欧美成人一级视频| 中文字幕欧美激情一区| 亚洲色图制服丝袜| 亚洲一二三区视频在线观看| 日韩国产在线观看一区| 韩国成人精品a∨在线观看| 国产成人精品在线看| 色呦呦一区二区三区| 欧美乱妇23p| 久久精品这里都是精品| 亚洲精品视频观看| 蜜臀av一区二区在线观看| 大陆成人av片| 欧美日韩免费观看一区二区三区| 91精品国产色综合久久不卡蜜臀| 欧美精品一区二区三| 亚洲天堂免费看| 青青草国产精品亚洲专区无| 高潮精品一区videoshd| 欧美视频在线不卡| 久久久www成人免费毛片麻豆| 亚洲日本免费电影| 久久99国产乱子伦精品免费| 96av麻豆蜜桃一区二区| 精品日韩欧美在线| 国产精品久久久久三级| 日本在线不卡一区| 99re这里只有精品6| 日韩你懂的电影在线观看| 亚洲乱码国产乱码精品精小说| 欧美a级一区二区| 色综合天天综合在线视频| 欧美精品一区二区蜜臀亚洲| 一区二区三区欧美在线观看| 青青草视频一区| 91啪亚洲精品| 日韩午夜电影av| 一级做a爱片久久| 国产成人亚洲精品狼色在线| 欧美色网站导航| 亚洲欧美自拍偷拍色图| 久久 天天综合| 欧美剧情电影在线观看完整版免费励志电影| 国产清纯白嫩初高生在线观看91| 日韩二区三区四区| 欧美日韩亚洲综合在线|