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

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

?? visionconductor.cpp

?? tracciatore di mani con webcam
?? CPP
字號:
#include "Common.h"#include "VisionConductor.h"#include "FileHandling.h"#include <fstream>#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#ifdef WIN32#if defined(GetMessage)#undef GetMessage#endif#else // WIN32// otherwise declared in Common.hvoid ReplaceAll(string& mangle, const string what, const string with);#endif //WIN32/////////////////////////////////////////////////////////////////////////////// VisionConductorVisionConductor::VisionConductor()  : m_is_loaded(false),    m_camera_calib(""),    m_adjust_exposure(false),      // detection:    m_dt_radius(-1),    m_dt_cascades_start(-1),    m_dt_cascades_end(-1),    m_dt_min_match_duration(-1),    m_dt_min_color_coverage(-1),        // tracking    m_tr_num_KLT_features(-1),    m_tr_min_KLT_features(-1),    m_tr_cascades_start(-1),    m_tr_cascades_end(-1),    m_tr_winsize_width(-1),    m_tr_winsize_height(-1),    m_tr_min_feature_distance(-1),    m_tr_type(VC_TT_UNDEF),    // recognition    m_rc_cascades_start(-1),    m_rc_cascades_end(-1),    m_rc_max_scan_width(-1),    m_rc_max_scan_height(-1),    m_rc_scale_tolerance(-1){}VisionConductor::~VisionConductor(){}void VisionConductor::Load(string pathfile){  // $IT_DATA environmet variable, NULL if not set  const char *it_data = getenv("IT_DATA");  string std_it_data;  if (it_data!=NULL) {    std_it_data = ConvertPathToStandard(it_data);  } else {    std_it_data = "";  }  // substitute $IT_DATA environment variable, if requested  string::size_type pos = pathfile.find("$IT_DATA");  if (pos!=string::npos) {    if (it_data==NULL) {      throw HVEFile(pathfile, "The filename requests the environment variable "        "$IT_DATA to be set.");    }    // substitute "$IT_DATA" for the value of that environment variable    ReplaceAll(pathfile, "$IT_DATA", std_it_data);  }  // all paths in the VisionConductor file "filename" are relative  // to the path of "filename".  so, let's cd to that directory, load  // all cascades etc., and in the end restore the previous cwd.  string old_cwd = GetCWD();  string vc_path, fname;  SplitPathFile(pathfile, vc_path, fname);  VERBOSE1(5, "HandVu: loading supplemental conductor files from path %s",    vc_path.c_str());  if (old_cwd!=vc_path) {    SetCWD(vc_path);  }  m_masks.clear();  m_orig_areas.clear();  try {    // the actual parsing function    ParseFromFile(fname);  } catch (HVException& hve) {    if (old_cwd!=vc_path) {      SetCWD(old_cwd);    }    throw HVException(hve.GetMessage() + "\n" +      "note: paths in VisionConductor files are relative;\n"      "in this case to " + vc_path);  }  if (old_cwd!=vc_path) {    SetCWD(old_cwd);  }  SanityCheckMasks();  m_is_loaded = true;}/** parsing function; do not call directly but * call "Load" instead*/void VisionConductor::ParseFromFile(const string& filename){  ifstream file(filename.c_str());  if (!file) {    throw HVEFileNotFound(filename);  }  // $IT_DATA environmet variable, NULL if not set  const char *it_data = getenv("IT_DATA");  string std_it_data;  if (it_data!=NULL) {    std_it_data = ConvertPathToStandard(it_data);  } else {    std_it_data = "";  }  string line;  do {    getline(file, line);  } while (line=="" || line[0]=='#');  if (line==HV_CONDUCTOR_VERSION_1_5_STRING) {	  // version 1.5    do {      getline(file, line);    } while (line=="" || line[0]=='#');    {      char* buf = new char[line.length()];      int scanned = sscanf(line.c_str(), "camera calibration: %s", buf);      if (scanned!=1) {        throw HVEFile(filename, string("expected camera calibration file, found: ")+line);      }        m_camera_calib = string(buf);      delete[] buf;      // substitute $IT_DATA environment variable, if requested      string::size_type pos = m_camera_calib.find("$IT_DATA");      if (pos!=string::npos) {        if (it_data==NULL) {          throw HVEFile(filename, "The file requests the environment variable "            "$IT_DATA to be set.");        }        // substitute "$IT_DATA" for the value of that environment variable        ReplaceAll(m_camera_calib, "$IT_DATA", std_it_data);      }      if (m_camera_calib!="-") {        FILE* fp = fopen(m_camera_calib.c_str(), "rb");        if (!fp) {          throw HVEFile(filename, string("can not find file: ")+m_camera_calib);        }      } else {        m_camera_calib = "";      }    }    // what sort of camera exposure control is desired    do {      getline(file, line);    } while (line=="" || line[0]=='#');    {      char* buf = new char[line.length()];      int scanned = sscanf(line.c_str(), "camera exposure: %s", buf);      if (scanned!=1) {        throw HVEFile(filename, string("expected camera exposure control setting, found: ")+line);      }      if (strcmp(buf, "camera")==0) {        m_adjust_exposure = false;      } else if (strcmp(buf, "software")==0) {        m_adjust_exposure = true;      } else {        throw HVEFile(filename, string("expected camera exposure control setting (\"camera\" or \"software\"), found: ")+line);      }      delete[] buf;    }    // detection parameters    do {      getline(file, line);    } while (line=="" || line[0]=='#');    float coverage;    float radius;    int scanned = sscanf(line.c_str(), "detection params: coverage %f, duration %d, radius %f",      &coverage, &m_dt_min_match_duration, &radius);    if (scanned!=3) {      throw HVEFile(filename, string("expected detection params, found: ")+line);    }      m_dt_min_color_coverage = coverage;    if (radius>1) {      HVEFile(filename, "radius must be width-relative");    }    m_dt_radius = radius;    // tracking parameters    do {      getline(file, line);    } while (line=="" || line[0]=='#');    float min_dist;    float max_err;    scanned = sscanf(line.c_str(), "tracking params: num_f %d, min_f %d, win_w %d, win_h %d, min_dist %f, max_err %f",      &m_tr_num_KLT_features, &m_tr_min_KLT_features, &m_tr_winsize_width, &m_tr_winsize_height, &min_dist, &max_err);    if (scanned!=6) {      throw HVEFile(filename, string("expected tracking params, found: ")+line);    }      m_tr_min_feature_distance = min_dist;    if (max_err<=0) {      m_tr_max_feature_error = DBL_MAX;  // DBL_MAX switches this off    } else {      m_tr_max_feature_error = max_err;    }    // tracking style    do {      getline(file, line);    } while (line=="" || line[0]=='#');    string::size_type pos = line.find("tracking style: ");    if (pos==string::npos) {      throw HVEFile(filename, string("expected tracking style, found: ")+line);    }    string style = line.substr(strlen("tracking style: "));    if (style=="OPTICAL_FLOW_ONLY") {      m_tr_type = VC_TT_OPTICAL_FLOW_ONLY;    } else if (style=="OPTICAL_FLOW_COLOR") {      m_tr_type = VC_TT_OPTICAL_FLOW_COLOR;    } else if (style=="OPTICAL_FLOW_FLOCK") {      m_tr_type = VC_TT_OPTICAL_FLOW_FLOCK;    } else if (style=="OPTICAL_FLOW_COLORFLOCK") {      m_tr_type = VC_TT_OPTICAL_FLOW_COLORFLOCK;    } else if (style=="CAMSHIFT_HSV") {      m_tr_type = VC_TT_CAMSHIFT_HSV;    } else if (style=="CAMSHIFT_LEARNED") {      m_tr_type = VC_TT_CAMSHIFT_LEARNED;    } else {      throw HVEFile(filename, string("wrong tracking style: ")+style);    }    // recognition params    do {      getline(file, line);    } while (line=="" || line[0]=='#');    float max_scan_width;    float max_scan_height;    scanned = sscanf(line.c_str(), "recognition params: max_scan_width %f, max_scan_height %f",      &max_scan_width, &max_scan_height);    if (scanned!=2) {      throw HVEFile(filename, string("expected recognition params, found: ")+line);    }      m_rc_max_scan_width = max_scan_width;    m_rc_max_scan_height = max_scan_height;    m_rc_scale_tolerance = 1.75;  // magic!    int num;    // detection cascades    m_dt_cascades_start = 0;    num = ReadScannerData(file, filename, "detection");    m_dt_cascades_end = m_dt_cascades_start+num;    // tracking cascades    m_tr_cascades_start = m_dt_cascades_end;    num = ReadScannerData(file, filename, "tracking");    m_tr_cascades_end = m_tr_cascades_start+num;        // recognition cascades    m_rc_cascades_start = m_tr_cascades_end;    num = ReadScannerData(file, filename, "recognition");    m_rc_cascades_end = m_rc_cascades_start+num;    //    // load masks    //    do {      getline(file, line);    } while (line=="" || line[0]=='#');    scanned = sscanf(line.c_str(), "%d masks", &num);    if (scanned!=1) {      throw HVEFile(filename, string("expected number of masks, found: ")+line);    }    for (int mcnt=0; mcnt<num; mcnt++) {      Mask mask;      string mask_filename;      do {        getline(file, mask_filename);      } while (mask_filename=="" || mask_filename[0]=='#');      // substitute $IT_DATA environment variable, if requested      string::size_type pos = mask_filename.find("$IT_DATA");      if (pos!=string::npos) {        if (it_data==NULL) {          throw HVEFile(filename, "The file requests the environment variable "            "$IT_DATA to be set.");        }        // substitute "$IT_DATA" for the value of that environment variable        ReplaceAll(mask_filename, "$IT_DATA", std_it_data);      }      mask.ParseFrom(ConvertPathToWindows(mask_filename).c_str());      if (m_masks.find(mask.GetName())!=m_masks.end()) {        throw HVException(string("mask '")+mask.GetName()+string("' exists already!"));      }      m_masks[mask.GetName()] = mask;    }  } else {    throw HVEFile(filename, string("Unknown or no conductor file version: ")+line);  }}void VisionConductor::SanityCheckMasks(){  for (int cc=0; cc<m_rc_cascades_end; cc++) {    CuCascadeProperties cp;    CuCascadeID id = (CuCascadeID) cc;    cuGetCascadeProperties(id, cp);    for (int nm=0; nm<(int)cp.names.size(); nm++) {      if (m_masks.find(cp.names[nm])==m_masks.end()) {        throw HVException(string("no mask for cascade '")+cp.names[nm]+string("'."));      }      ConstMaskIt mask = m_masks.find(cp.names[nm]);      if ((*mask).second.GetWidth()!=cp.template_width          || (*mask).second.GetHeight()!=cp.template_height)      {        throw HVException(string("mask size does not match cascade size ('")                          + cp.names[nm] + string("')."));      }      double m = (*mask).second.GetImageAreaRatio();      double c = cp.image_area_ratio;      if (fabs(m-c)>0.00001)      {        throw HVException(string("mask ratio does not match cascade ratio ('")                          + cp.names[nm]+string("')."));      }    }  }}/* reads file names C and M and settings from the file, then* loads cascade and mask from the file corresponding to C and M;* adds the results to m_cascades and m_masks*/int VisionConductor::ReadScannerData(ifstream& file, const string filename, const string type) {  // $IT_DATA environmet variable, NULL if not set  const char *it_data = getenv("IT_DATA");  string std_it_data;  if (it_data!=NULL) {    std_it_data = ConvertPathToStandard(it_data);  } else {    std_it_data = "";  }  string line;  do {    getline(file, line);  } while (line=="" || line[0]=='#');  int num;  int scanned = sscanf(line.c_str(), (string("%d")                                      +type+string(" cascades")).c_str(), &num);  if (scanned!=1) {    throw HVEFile(filename, string("expected number of ")                  +type+string(" cascades, found: ")+line);  }  for (int cs=0; cs<num; cs++) {    CuCascadeID cascadeID;    //    // load cascade    //    {      string cascade_filename;      do {        getline(file, cascade_filename);      } while (cascade_filename=="" || cascade_filename[0]=='#');      // substitute $IT_DATA environment variable, if requested      string::size_type pos = cascade_filename.find("$IT_DATA");      if (pos!=string::npos) {        if (it_data==NULL) {          throw HVEFile(filename, "The file requests the environment variable "            "$IT_DATA to be set.");        }        // substitute "$IT_DATA" for the value of that environment variable        ReplaceAll(cascade_filename, "$IT_DATA", std_it_data);      }      cuLoadCascade(ConvertPathToWindows(cascade_filename).c_str(), &cascadeID);    }    //    // read configuration of scanners    //    {      float left, top, right, bottom;      do {        getline(file, line);      } while (line=="" || line[0]=='#');      scanned =         sscanf(line.c_str(), "area: left %f, top %f, right %f, bottom %f",         &left, &top, &right, &bottom);      if (scanned!=4) {        throw HVEFile(filename, string("expected area, found: ")+line);      }      if (!(0<=left && left<=1) || !(0<=top && top<=1)          || !(0<=right && right<=1) || !(0<=bottom && bottom<=1))       {        throw HVEFile(filename, "areas must have relative coordinates");      }      do {        getline(file, line);      } while (line=="" || line[0]=='#');      float start_scale, stop_scale, scale_inc_factor;      scanned = sscanf(line.c_str(),         "params scaling: start %f, stop %f, inc_factor %f",        &start_scale, &stop_scale, &scale_inc_factor);      if (scanned!=3) {        throw HVEFile(filename, string("expected params, found: ")+line);      }      float translation_inc_x, translation_inc_y;      do {        getline(file, line);      } while (line=="" || line[0]=='#');      int post_process;      scanned = sscanf(line.c_str(),         "params misc: translation_inc_x %f, translation_inc_y %f, post_process %d",        &translation_inc_x, &translation_inc_y, &post_process);      if (scanned!=3) {        throw HVEFile(filename, string("expected params, found: ")+line);      }       CQuadruple orig_area(left, top, right, bottom);      m_orig_areas.push_back(orig_area);      CuScannerParameters sp;      sp.active = false;      sp.left = sp.top = sp.right = sp.bottom = -1;      sp.start_scale = start_scale;      sp.stop_scale = stop_scale;      sp.scale_inc_factor = scale_inc_factor;      sp.translation_inc_x = translation_inc_x;      sp.translation_inc_y = translation_inc_y;      sp.post_process = (post_process==1);      cuSetScannerParameters(cascadeID, sp);    }  }  return num;}bool VisionConductor::IsLoaded() const{  return m_is_loaded;}#pragma warning (disable:4786)ConstMaskIt VisionConductor::GetMask(const string& name) const{  ConstMaskIt it = m_masks.find(name);  if (it==m_masks.end()) {    throw HVException(string("no mask for name ")+name);  }  return it;}#pragma warning (default:4786)CRect CQuadruple::toRect(double scale_x, double scale_y) const{  return CRect((int)(left*scale_x),                (int)(top*scale_y),               (int)(right*scale_x),               (int)(bottom*scale_y));}void CQuadruple::fromRect(const CRect& rect, double scale_x, double scale_y) {  left = (double)rect.left/scale_x;  top = (double)rect.top/scale_y;  right = (double)rect.right/scale_x;  bottom = (double)rect.bottom/scale_y;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
97精品国产露脸对白| 日韩欧美一区二区视频| 天天操天天干天天综合网| 久久久久久综合| 色偷偷久久一区二区三区| 丁香亚洲综合激情啪啪综合| 日本成人在线一区| 免费成人av在线| 久久精品久久精品| 蜜桃视频一区二区| 国产在线精品免费| 国产在线精品一区二区不卡了| 亚洲国产激情av| 亚洲成人av在线电影| 久久女同互慰一区二区三区| 欧美国产日韩精品免费观看| 亚洲精品免费在线观看| 黄色成人免费在线| 国产亚洲一区二区三区在线观看| 91丨porny丨最新| 亚洲精品免费在线播放| 午夜精品一区二区三区免费视频 | 欧美亚洲综合在线| 奇米影视在线99精品| 国产精品一区三区| 国产精品久久久久桃色tv| 99久久伊人精品| 亚洲国产日产av| 欧美一区二区三区四区高清| 国产一区二区三区免费观看| 国产精品久久久久久福利一牛影视| 成人在线视频首页| 国产精品久久久久久福利一牛影视| 波多野结衣亚洲| 一区av在线播放| 日韩情涩欧美日韩视频| 国产999精品久久| 欧美国产激情一区二区三区蜜月| 色综合天天天天做夜夜夜夜做| 亚洲国产日韩一区二区| 日本一区二区三区在线不卡 | 日韩欧美国产系列| 亚洲电影视频在线| 久久久精品人体av艺术| 91视频在线观看| 蜜臀久久99精品久久久久久9| 欧美日韩国产区一| 91视频一区二区三区| 日韩精品成人一区二区三区| 亚洲欧美在线aaa| 日韩一区二区三区四区| 欧美午夜在线一二页| 国产一区二区三区免费播放| 18成人在线视频| 日本一区二区高清| 欧美三级日本三级少妇99| 91同城在线观看| 激情亚洲综合在线| 综合婷婷亚洲小说| 中文字幕乱码一区二区免费| 欧美区一区二区三区| 91一区二区三区在线观看| 蜜臀av一区二区| 亚洲精品国产a久久久久久| 精品久久久久久久人人人人传媒 | 在线观看国产精品网站| 久久99国产乱子伦精品免费| 日韩高清中文字幕一区| 亚洲欧美国产三级| 亚洲国产精品黑人久久久| 久久久精品tv| 日韩欧美在线123| 日韩欧美久久久| 91久久线看在观草草青青| 狠狠色丁香婷婷综合久久片| 美国毛片一区二区| 午夜久久久久久久久| 午夜国产不卡在线观看视频| 亚洲另类中文字| 国产精品美女视频| 久久婷婷国产综合精品青草| 日韩欧美在线123| 制服丝袜日韩国产| 欧美电视剧在线看免费| 欧美体内she精视频| 99精品视频中文字幕| 国产99久久久精品| 国产99久久久国产精品潘金网站| 激情亚洲综合在线| 久久精品国产久精国产爱| 丝袜诱惑制服诱惑色一区在线观看 | 高清日韩电视剧大全免费| 国产一区二区在线观看免费 | 麻豆精品一区二区综合av| 亚洲午夜成aⅴ人片| 石原莉奈在线亚洲三区| 亚洲成国产人片在线观看| 日韩高清一区在线| 日本成人在线视频网站| 亚洲一二三级电影| 秋霞电影网一区二区| 青青草97国产精品免费观看 | 精品久久99ma| 国产欧美中文在线| 国产精品成人一区二区艾草 | 亚洲1区2区3区4区| 色婷婷精品大视频在线蜜桃视频| 欧美精品一二三区| 欧美一级精品大片| 中文字幕一区二区三区在线播放 | 五月天网站亚洲| 免费观看成人av| 成人av网站在线观看免费| av电影在线观看一区| 欧美精品一级二级| 精品久久人人做人人爰| 日韩一区二区影院| 国产精品每日更新| 一区二区三区高清在线| 久久99精品国产.久久久久久 | 久久精品男人天堂av| 中文字幕在线观看不卡| 国产精品资源在线| 国产福利精品一区| 欧美伊人久久久久久久久影院| 在线电影一区二区三区| 国产精品私人自拍| 亚洲国产精品自拍| av动漫一区二区| 欧美人体做爰大胆视频| 国产精品久久久久久福利一牛影视| 欧美电影免费提供在线观看| 国产精品久久影院| 日本va欧美va欧美va精品| 国产91露脸合集magnet| 91亚洲精华国产精华精华液| 欧美一区二区精品在线| 中文字幕欧美激情| 国内精品久久久久影院色| 色综合久久综合网欧美综合网| 久久天天做天天爱综合色| 亚洲精品中文在线| 成人免费视频caoporn| 91精品国产免费久久综合| 精品国内二区三区| 日韩成人一区二区三区在线观看| 粉嫩高潮美女一区二区三区| 精品少妇一区二区三区日产乱码 | 日本成人中文字幕| 99精品视频在线观看免费| 久久日韩精品一区二区五区| 亚洲六月丁香色婷婷综合久久 | 午夜欧美2019年伦理| 国产精品主播直播| 亚洲精品在线电影| 日韩精品亚洲一区二区三区免费| 在线视频欧美精品| 欧美激情一区在线| 国产风韵犹存在线视精品| 欧美一级高清片在线观看| 无码av免费一区二区三区试看| 成人免费av资源| 欧美日韩一区二区在线视频| 亚洲免费在线观看| 国产成人精品亚洲午夜麻豆| 精品国内二区三区| 男人操女人的视频在线观看欧美| 欧美日韩视频第一区| 亚洲欧美另类小说| 欧美性一区二区| 中文字幕亚洲欧美在线不卡| 视频在线观看一区二区三区| 色网站国产精品| 亚洲欧美色一区| 欧美日韩在线综合| 亚洲综合久久久久| 色香蕉成人二区免费| 自拍偷拍国产亚洲| 色综合久久88色综合天天6 | 亚洲精品福利视频网站| 欧美亚洲一区三区| 一区二区三区在线播| 欧美日韩国产高清一区二区| 亚洲综合小说图片| 日韩午夜av一区| 日韩精品乱码免费| 久久久久久久久蜜桃| 国产主播一区二区| 中文成人av在线| hitomi一区二区三区精品| 最新中文字幕一区二区三区| aaa国产一区| 亚洲国产精品成人久久综合一区 | 亚洲午夜精品网| 欧美日韩一卡二卡| 久久av资源站| 久久久美女艺术照精彩视频福利播放| 国产夫妻精品视频| 18成人在线视频| 日韩欧美综合一区|