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

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

?? handvu_img.cpp

?? tracciatore di mani con webcam
?? CPP
字號:
#include "Common.h"#include "CubicleWrapper.h"#include "HandVu.hpp"#include "FileHandling.h"#include <sys/types.h>#include <sys/stat.h>#include <highgui.h>#ifdef HAVE_UNISTD_H#include <unistd.h>#endif#ifdef HAVE_ERRNO_H#include <errno.h>#endif#ifdef HAVE_FLOAT_H#include <float.h>#endif#ifdef USE_MFC#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif // _DEBUG#endif // USE_MFC/////////////////////////////////////////////////////////////////////////////// HandVuvoid HandVu::SaveScannedArea(IplImage* pImg, string& picfile){  SaveImageArea(pImg, m_scan_area, picfile);}void HandVu::SaveImageArea(IplImage* pImg, CRect area, string& picfile){  string extension = ".ppm";  if (picfile=="") {    if (m_img_fname_root=="") {      throw HVException("must SetSaveFilenameRoot if no filename given");    }    picfile = GetNextSnapshotFilename(m_img_fname_root, extension);  }  if (area.left>=area.right) { int t=area.left; area.left=area.right; area.right=t; }  if (area.top>=area.bottom) { int t=area.top; area.top=area.bottom; area.bottom=t; }  if (area.left<0) area.left = 0;  if (area.right>pImg->width) area.right = pImg->width;;  if (area.top<0) area.top = 0;;  if (area.bottom>pImg->height) area.bottom = pImg->height;  if (strcmp(pImg->channelSeq, "BGR")==0) {    WriteAreaAsPPM_BGR(pImg, area, picfile);  } else if (strcmp(pImg->channelSeq, "RGB")==0) {    WriteAreaAsPPM_RGB(pImg, area, picfile);  } else if (strcmp(pImg->channelSeq, "GRAY")==0) {    WriteAreaAsPGM_Gray(pImg, area, picfile);  } else {    throw HVException("can not write this image format");  }}void HandVu::WriteAreaAsBMP(IplImage* pImg, const CRect& area, const string& filename){  IplImage* areaImg =     cvCreateImage(cvSize(area.right-area.left, area.bottom-area.top),                  pImg->depth, pImg->nChannels);  cvResize(pImg, areaImg);  int success = cvSaveImage(filename.c_str(), areaImg);  if (!success) {    throw HVException(string("failure saving image to ") + filename);  }}// write binary color unsigned char PPM format (the most standard)void HandVu::WriteAreaAsPPM_BGR(IplImage* pImg, const CRect& area, const string& picfile){  ASSERT(strcmp(pImg->channelSeq, "BGR")==0);  FILE *fp = fopen(picfile.c_str(), "wb");  // open for writing in binary format  if (!fp) {    throw HVEFile(picfile, "cannot open file for writing");  }  // allocate buffer  int width = area.right-area.left;  size_t total_size = width*(area.bottom-area.top)*3;  unsigned char* buf = (unsigned char*) alloca(total_size);  ASSERT(pImg->nChannels==3);  // fill buffer with image data  unsigned char* pPix = buf;  for (int y=area.top; y<area.bottom; y++) {    ColorBGR* pSrc = (ColorBGR*) pImg->imageData;    pSrc += y*pImg->width + area.left;    for (int x=area.left; x<area.right; x++) {      *pPix++ = (unsigned char) pSrc->red;      *pPix++ = (unsigned char) pSrc->green;      *pPix++ = (unsigned char) pSrc->blue;      pSrc++;    }  }  /*  CvPixelPosition8u position;  CV_INIT_PIXEL_POS(position,                     (unsigned char*)(pImg->imageData),                    pImg->widthStep,                     cvSize(pImg->width, pImg->height), 0, 0,                    pImg->origin);  for (int y=top; y<bottom; y++) {    CV_MOVE_TO(position, left, y, 3);    for (int x=left; x<right; x++) {      unsigned char* curr = CV_GET_CURRENT(position, 3);      *pPix++ = curr[1];      *pPix++ = curr[0];      *pPix++ = curr[2];      CV_MOVE_RIGHT(position, 3);    }  }  */  // write to file  // header  fprintf(fp, "P6\n%d %d\n%d\n", width, area.bottom-area.top, 255);  // binary  // body  size_t cnt = fwrite((void *) buf, 1, total_size, fp);  fclose(fp);  if ((int)cnt!=total_size) {    throw HVEFile(picfile, "cannot write image data to file");  }}// write binary color unsigned char PPM format (the most standard)void HandVu::WriteAreaAsPPM_RGB(IplImage* pImg, const CRect& area, const string& picfile){  ASSERT(strcmp(pImg->channelSeq, "BGR")==0);  FILE *fp = fopen(picfile.c_str(), "wb");  // open for writing in binary format  if (!fp) {    throw HVEFile(picfile, "cannot open file for writing");  }  // allocate buffer  int width = area.right-area.left;  size_t total_size = width*(area.bottom-area.top)*3;  unsigned char* buf = (unsigned char*) alloca(total_size);  ASSERT(pImg->nChannels==3);  // fill buffer with image data  unsigned char* pPix = buf;  for (int y=area.top; y<area.bottom; y++) {    ColorBGR* pSrc = (ColorBGR*) pImg->imageData;    pSrc += y*pImg->width + area.left;    for (int x=area.left; x<area.right; x++) {      *pPix++ = (unsigned char) pSrc->blue;      *pPix++ = (unsigned char) pSrc->green;      *pPix++ = (unsigned char) pSrc->red;      pSrc++;    }  }  /*  CvPixelPosition8u position;  CV_INIT_PIXEL_POS(position,                     (unsigned char*)(pImg->imageData),                    pImg->widthStep,                     cvSize(pImg->width, pImg->height), 0, 0,                    pImg->origin);  for (int y=top; y<bottom; y++) {    CV_MOVE_TO(position, left, y, 3);    for (int x=left; x<right; x++) {      unsigned char* curr = CV_GET_CURRENT(position, 3);      *pPix++ = curr[1];      *pPix++ = curr[0];      *pPix++ = curr[2];      CV_MOVE_RIGHT(position, 3);    }  }  */  // write to file  // header  fprintf(fp, "P6\n%d %d\n%d\n", width, area.bottom-area.top, 255);  // binary  // body  size_t cnt = fwrite((void *) buf, 1, total_size, fp);  fclose(fp);  if ((int)cnt!=total_size) {    throw HVEFile(picfile, "cannot write image data to file");  }}// write binary gray unsigned char PGM formatvoid HandVu::WriteAreaAsPGM_Gray(IplImage* pImg, const CRect& area, const string& picfile){  ASSERT(strcmp(pImg->channelSeq, "GRAY")==0);  ASSERT(pImg->depth==IPL_DEPTH_32F);  FILE *fp = fopen(picfile.c_str(), "wb");  // open for writing in binary format  if (!fp) {    throw HVEFile(picfile, "cannot open file for writing");  }  // allocate buffer  int width = area.right-area.left;  size_t total_size = width*(area.bottom-area.top);  unsigned char* buf = (unsigned char*) alloca(total_size);  ASSERT(pImg->nChannels==1);  // get min and max  float min=FLT_MAX, max=FLT_MIN;  unsigned char* pPix = buf;  for (int y=area.top; y<area.bottom; y++) {    float* pSrc = (float*) pImg->imageData;    pSrc += y*pImg->width + area.left;    for (int x=area.left; x<area.right; x++) {      if (*pSrc<min) {        min = *pSrc;      }      if (*pSrc>max) {        max = *pSrc;      }      pSrc++;    }  }  float spread = max-min;  // fill buffer with image data  for (int y=area.top; y<area.bottom; y++) {    float* pSrc = (float*) pImg->imageData;//    unsigned char* pSrc = (unsigned char*) pImg->imageData;    pSrc += y*pImg->width + area.left;    for (int x=area.left; x<area.right; x++) {      *pPix++ = (unsigned char) (255.0 * (*pSrc-min)/spread);      pSrc++;    }  }  // write to file  // header  fprintf(fp, "P5\n%d %d\n%d\n", width, area.bottom-area.top, 255);  // binary  // body  size_t cnt = fwrite((void *) buf, 1, total_size, fp);  fclose(fp);  if ((int)cnt!=total_size) {    throw HVEFile(picfile, "cannot write image data to file");  }}string HandVu::GetNextSnapshotFilename(const string& base,                                       const string& extension){  static int g_last_archive_id=0;  ASSERT(base!="");  string next_name;  for (;;) {    g_last_archive_id++;    char id[10];    sprintf(id, "%d", g_last_archive_id);    // todo: should use snprintf (WIN32: _snprintf)    next_name = base + id + extension;    FILE* test = fopen(next_name.c_str(), "r");    if (test) {      fclose(test);    } else {      break;    }  }    return next_name;}#if defined(STAT_MACROS_BROKEN) || !defined(HAVE_CONFIG_H) && defined(WIN32)#define S_ISDIR(mode) (mode&_S_IFDIR)#endifvoid HandVu::SetSaveFilenameRoot(const string& fname_root) {  struct stat s;  int error = stat(fname_root.c_str(), &s);#ifdef HAVE_STAT_EMPTY_STRING_BUG  if (fname_root.length()==0) {    error = -1;    errno = ENOENT;  }#endif  if (error==-1 && errno==ENOENT) {    // file does not exist    // maybe fname_root is a combination of a     // path and a partial file name?    string path, fname;    SplitPathFile(fname_root, path, fname);    error = stat(path.c_str(), &s);#ifdef HAVE_STAT_EMPTY_STRING_BUG    if (path.length()==0) {      error = -1;      errno = ENOENT;    }#endif    if (error!=0 && errno==ENOENT || !S_ISDIR(s.st_mode)) {      throw HVException(string("neither directory ") + fname_root +		        " nor directory " + path + " exist, or they are not accessible");    }  } else if (error!=0 || !S_ISDIR(s.st_mode)) {    throw HVException(string("directory ") + fname_root +		    " does not exist");  }  m_img_fname_root = fname_root;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕 久热精品 视频在线 | 天天操天天干天天综合网| 美女视频一区在线观看| 99视频精品免费视频| 欧美va亚洲va在线观看蝴蝶网| 亚洲欧洲在线观看av| 激情图区综合网| 欧美日韩黄色一区二区| 亚洲欧美成人一区二区三区| 国产一区在线观看麻豆| 欧美剧情片在线观看| 亚洲人成在线观看一区二区| 丁香天五香天堂综合| 99精品视频免费在线观看| 理论电影国产精品| 欧美人伦禁忌dvd放荡欲情| 三级一区在线视频先锋| 91精品久久久久久久99蜜桃| 国产乱淫av一区二区三区| 国产精品久久久久三级| 欧美综合在线视频| 亚洲另类在线制服丝袜| 亚洲第一主播视频| 91色.com| 一个色综合网站| 99久久亚洲一区二区三区青草| 国产无遮挡一区二区三区毛片日本| 男女性色大片免费观看一区二区 | 成人免费电影视频| 久久五月婷婷丁香社区| 国产一区二区三区日韩 | 欧美高清www午色夜在线视频| 一区二区三区在线高清| 色8久久精品久久久久久蜜| 亚洲午夜久久久久| 欧美精品v国产精品v日韩精品 | 欧美无人高清视频在线观看| 曰韩精品一区二区| 欧美精品少妇一区二区三区 | 日韩一级免费观看| 美洲天堂一区二卡三卡四卡视频| 91精品国产91久久综合桃花| 免费观看成人鲁鲁鲁鲁鲁视频| 欧美v国产在线一区二区三区| 国产精品一区一区| 欧美国产激情二区三区| 不卡的av电影| 午夜精品一区二区三区电影天堂| 欧美久久一二区| 久草这里只有精品视频| 国产精品免费aⅴ片在线观看| 91在线视频网址| 午夜av区久久| 国产亚洲欧美色| 在线观看一区二区精品视频| 免费高清在线视频一区·| 久久免费看少妇高潮| 99精品国产热久久91蜜凸| 亚洲国产欧美另类丝袜| 2020国产成人综合网| 91麻豆福利精品推荐| 男男gaygay亚洲| 18成人在线观看| 精品嫩草影院久久| 色中色一区二区| 久久99国产精品尤物| 日本在线不卡视频一二三区| 国产欧美一区二区精品婷婷| 欧美性高清videossexo| 激情偷乱视频一区二区三区| 一区二区三区欧美日韩| 久久一夜天堂av一区二区三区| 成人激情午夜影院| 蜜臀久久99精品久久久画质超高清| 欧美高清在线精品一区| 欧美一三区三区四区免费在线看 | 国产一区二区导航在线播放| 欧美亚洲综合另类| 久久香蕉国产线看观看99| 一区二区不卡在线视频 午夜欧美不卡在 | 亚洲桃色在线一区| 欧美少妇性性性| 日本大胆欧美人术艺术动态| 国产亚洲制服色| 欧美日韩二区三区| jiyouzz国产精品久久| 六月丁香综合在线视频| 亚洲一区二区精品视频| 国产精品三级视频| 久久综合色鬼综合色| 91精品国产丝袜白色高跟鞋| 色综合久久综合| 成人手机在线视频| 国内一区二区在线| 美国毛片一区二区三区| 亚洲国产综合人成综合网站| 国产精品免费网站在线观看| 精品国产电影一区二区| 91精品国产综合久久久久久漫画| 欧美在线看片a免费观看| a亚洲天堂av| 成人精品电影在线观看| 国产盗摄精品一区二区三区在线 | 久久99在线观看| 三级亚洲高清视频| 亚洲成人动漫av| 亚洲超碰精品一区二区| 一区二区三区高清不卡| 亚洲伦在线观看| 国产精品传媒在线| 综合在线观看色| 亚洲人成精品久久久久| 亚洲三级电影网站| 亚洲人123区| 亚洲综合无码一区二区| 亚洲在线观看免费| 亚洲成a人在线观看| 午夜视频在线观看一区| 日韩电影在线观看网站| 久久精品国产**网站演员| 久久精品国产在热久久| 精品影视av免费| 国产成人av电影在线观看| 成人丝袜视频网| 欧洲另类一二三四区| 欧美日韩国产免费一区二区 | 免费看欧美女人艹b| 九九视频精品免费| 成人免费毛片片v| 一本大道久久精品懂色aⅴ| 欧美日韩激情在线| 欧美变态口味重另类| 国产精品视频免费看| 一区二区三区日韩欧美| 免费人成在线不卡| 精品一区二区在线看| jlzzjlzz欧美大全| 欧美色图免费看| 精品人在线二区三区| 中文字幕乱码日本亚洲一区二区| 亚洲欧美激情视频在线观看一区二区三区 | 一区二区三区在线视频观看58 | gogo大胆日本视频一区| 欧美日韩中文字幕精品| 精品久久久久久久人人人人传媒 | 亚洲综合成人在线视频| 成人午夜精品在线| 欧美午夜电影网| 久久亚洲综合色一区二区三区| 中文字幕在线播放不卡一区| 亚洲午夜在线电影| 国产另类ts人妖一区二区| 91麻豆免费看| 久久久久亚洲蜜桃| 一区二区三区视频在线看| 国产一区欧美一区| 欧美色手机在线观看| 日本一区二区动态图| 天天综合色天天综合色h| 国产精品亚洲一区二区三区在线 | 精品少妇一区二区| 亚洲精品水蜜桃| 国产一区二区三区在线观看免费视频| 91片在线免费观看| 久久久亚洲综合| 免费在线观看视频一区| 91福利社在线观看| 日本一区二区高清| 久久精品99国产精品日本| 在线精品视频一区二区三四| 亚洲国产高清aⅴ视频| 久久99久国产精品黄毛片色诱| 欧美在线观看视频一区二区三区 | 午夜成人在线视频| 91美女片黄在线观看91美女| 国产丝袜欧美中文另类| 日韩—二三区免费观看av| 91久久精品一区二区| 亚洲欧美自拍偷拍| 国产不卡免费视频| 国产欧美一二三区| 国产乱对白刺激视频不卡| 欧美成人一区二区三区在线观看 | 久久久无码精品亚洲日韩按摩| 午夜精品久久久久久久久久久 | 欧美色综合影院| 亚洲综合网站在线观看| 色综合久久88色综合天天免费| 国产欧美日韩亚州综合| 国产sm精品调教视频网站| 久久久久久一级片| 国产精品一区三区| 久久精品综合网| 国产成人在线影院| 亚洲精品一区二区三区福利| 精品一区二区影视| 久久亚洲一级片| 国产黑丝在线一区二区三区| 日本一区二区综合亚洲| 高清国产一区二区三区|