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

📄 maintenanceapp.cpp

📁 tracciatore di mani con webcam
💻 CPP
📖 第 1 页 / 共 2 页
字号:
      ASSERT(img);      bool brighten = m_icon_groups[grpcnt].m_is_selected[imgcnt];      // left upper corner is origin      for (int y=area.top; y<area.bottom; y++) {        RGBTRIPLE* pDst = (RGBTRIPLE*) out_img->imageData;        pDst += y*out_img->width + area.left;        RGBTRIPLE* pSrc = (RGBTRIPLE*) cvPtr2D(img, y-area.top, 0);        for (int x=area.left; x<area.right; x++) {          BYTE r, b, g;          r = pSrc->rgbtRed;           g = pSrc->rgbtGreen;           b = pSrc->rgbtBlue;           if (r>0 || g>0 || b>0) {            if (brighten) {              pDst->rgbtRed = min(255, r*2);              pDst->rgbtGreen = min(255, g*2);              pDst->rgbtBlue = min(255, b*2);            } else {              pDst->rgbtRed = r;              pDst->rgbtGreen = g;              pDst->rgbtBlue = b;            }          }          pSrc++;          pDst++;        }      }      if (m_icon_groups[grpcnt].m_highlight_active[imgcnt]          && !(grpcnt==IG_WO_SELECT)) { // hack        cvRectangle (out_img, cvPoint(area.left+3, area.top+3),
          cvPoint(area.right-4, area.bottom-4), CV_RGB(255,0,0), 5);
      }      // hack:      if (grpcnt==IG_WO_SELECT && imgcnt==1) {        cvRectangle (out_img, cvPoint(area.left+3, area.top+3),
          cvPoint(area.right-4, area.bottom-4), CV_RGB(255,0,0), 5);
      }    }  }  int x = cvRound(m_event.m_ptr1_x*(m_img_width-1));  int y = cvRound(m_event.m_ptr1_y*(m_img_height-1));  // second pointer/hand   if (m_active_app==5) {    hvState state;    hvGetState(1, state);    if (state.tracked) {      int green_pos_x = cvRound(state.center_xpos*(m_img_width-1));      int green_pos_y = cvRound(state.center_ypos*(m_img_height-1));      CRect area(min(x, green_pos_x), min(y, green_pos_y), max(x, green_pos_x), max(y, green_pos_y));      DimEverythingBut(out_img, area);      cvRectangle(out_img, cvPoint(area.left, area.top),
        cvPoint(area.right, area.bottom), CV_RGB(255,255,0), 3);
      cvCircle(out_img, cvPoint(green_pos_x, green_pos_y), 10, CV_RGB(0,255,0), CV_FILLED);
    }
  }  if (m_show_hand_location && m_event.m_ptr1_tracked) {    cvCircle(out_img, cvPoint(x, y), 10, CV_RGB(255,0,0), CV_FILLED);
  }}void CMaintenanceApp::DimEverythingBut(IplImage* pImage, const CRect& area){  const double dimfac = .5;  for (int y=0; y<pImage->height; y++) {    RGBTRIPLE* pDst = (RGBTRIPLE*) pImage->imageData;
    pDst += y*pImage->width;
    for (int x=0; x<pImage->width; x++, pDst++) {      if (area.top<=y && y<area.bottom && area.left<=x && x<area.right) {        continue;      }      pDst->rgbtRed = (BYTE)((double)pDst->rgbtRed*dimfac);      pDst->rgbtGreen = (BYTE)((double)pDst->rgbtGreen*dimfac);      pDst->rgbtBlue = (BYTE)((double)pDst->rgbtBlue*dimfac);    }  }}CRect CMaintenanceApp::AbsoluteArea(double left, double top,                                   double right, double bottom){  CRect abs_area;  abs_area = CRect((int)(m_img_width*left),    (int)(m_img_height*top),    (int)(m_img_width*right),    (int)(m_img_height*bottom));  ASSERT(0<=abs_area.left && abs_area.left<=m_img_width);  ASSERT(0<=abs_area.top && abs_area.top<=m_img_height);  ASSERT(0<=abs_area.right && abs_area.right<=m_img_width);  ASSERT(0<=abs_area.bottom && abs_area.bottom<=m_img_height);  ASSERT(abs_area.left<abs_area.right);  ASSERT(abs_area.top<abs_area.bottom);  return abs_area;}void CMaintenanceApp::HideAllGroups(){  for (int g=0; g<(int)m_group_shown.size(); g++) {    m_group_shown[g] = false;  }}void CMaintenanceApp::ShowGroupExclusive(IconGroupID id){  HideAllGroups();  m_group_shown[id] = true;}void CMaintenanceApp::BuildIconGroups(){  DbgLog((LOG_CUSTOM1, 4, "loading icons..."));
  m_icon_groups.resize(IG_LEN);  m_group_shown.resize(IG_LEN);  // voice recorder group  double vr_left = .05;  double width = .28;  double hor_gap = .02;  m_voicerec_ctr_y = .11;  m_voicerec_default_x = .5;  double height = .18;  double vr_top = m_voicerec_ctr_y-height/2.0;  double vr_bottom = vr_top+height;  CRect abs_area;  abs_area = AbsoluteArea(vr_left, vr_top, vr_left+width, vr_bottom);  m_icon_groups[IG_VOICE_RECORDER].AddOverlay("$IT_DATA/Icons/record.bmp", abs_area, true);//  m_icon_groups[IG_VOICE_RECORDER].AddOverlay("$IT_DATA/Icons/play.bmp", abs_area, true);  vr_left += width+hor_gap;  abs_area = AbsoluteArea(vr_left, vr_top, vr_left+width, vr_bottom);  m_icon_groups[IG_VOICE_RECORDER].AddOverlay("$IT_DATA/Icons/pause.bmp", abs_area, true);  vr_left += width+hor_gap;  abs_area = AbsoluteArea(vr_left, vr_top, vr_left+width, vr_bottom);  m_icon_groups[IG_VOICE_RECORDER].AddOverlay("$IT_DATA/Icons/stop.bmp", abs_area, true);  m_group_shown[IG_VOICE_RECORDER] = false;  // image/video capture menu group  m_imgcap_ctr_x = .2;  m_imgcap_default_y = .5;  width = .3;  vr_left = m_imgcap_ctr_x-width/2.0;  double vr_right = vr_left+width;  double ver_gap = .02;  vr_top = .15;  height = .23;  abs_area = AbsoluteArea(vr_left, vr_top, vr_right, vr_top+height);  m_icon_groups[IG_IMG_VID_CAP].AddOverlay("$IT_DATA/Icons/snapshot.bmp", abs_area, true);  vr_top += height+ver_gap;  abs_area = AbsoluteArea(vr_left, vr_top, vr_right, vr_top+height);  m_icon_groups[IG_IMG_VID_CAP].AddOverlay("$IT_DATA/Icons/frame.bmp", abs_area, true);  vr_top += height+ver_gap;  abs_area = AbsoluteArea(vr_left, vr_top, vr_right, vr_top+height);  m_icon_groups[IG_IMG_VID_CAP].AddOverlay("$IT_DATA/Icons/liveVideo.bmp", abs_area, true);  m_group_shown[IG_IMG_VID_CAP] = false;  // image area snapshot  /*  abs_area = AbsoluteArea(vr_left, vr_top, vr_right, vr_bottom);  m_icon_groups[IG_IMG_AREA].AddOverlay("$IT_DATA/Icons/frame.bmp", abs_area, true);  abs_area = AbsoluteArea(vr_left, vr_top, vr_right, vr_bottom);  m_icon_groups[IG_IMG_AREA].AddOverlay("$IT_DATA/Icons/liveVideo.bmp", abs_area, true);  m_group_shown[IG_IMG_AREA] = false;  */  // work order selection  m_woselect_ctr_x = 0.5;  vr_top = 0.05;  double vr_arrow_left = m_woselect_ctr_x-.06;  double vr_arrow_right = m_woselect_ctr_x+.06;  ver_gap = .03;  height = .15;  abs_area = AbsoluteArea(vr_arrow_left, vr_top, vr_arrow_right, vr_bottom);  m_icon_groups[IG_WO_SELECT].AddOverlay("$IT_DATA/Icons/scrollup.bmp", abs_area, true);  vr_left = m_woselect_ctr_x-.38;  vr_right = m_woselect_ctr_x+.38;  vr_top += height+ver_gap;  abs_area = AbsoluteArea(vr_left, vr_top, vr_right, vr_top+height);  m_icon_groups[IG_WO_SELECT].AddOverlay("$IT_DATA/Icons/option1.bmp", abs_area, true);  vr_top += height+ver_gap;  abs_area = AbsoluteArea(vr_left, vr_top, vr_right, vr_top+height);  m_icon_groups[IG_WO_SELECT].AddOverlay("$IT_DATA/Icons/option2.bmp", abs_area, true);  vr_top += height+ver_gap;  abs_area = AbsoluteArea(vr_left, vr_top, vr_right, vr_top+height);  m_icon_groups[IG_WO_SELECT].AddOverlay("$IT_DATA/Icons/option3.bmp", abs_area, true);  vr_top += height+ver_gap;  abs_area = AbsoluteArea(vr_arrow_left, vr_top, vr_arrow_right, vr_top+height);  m_icon_groups[IG_WO_SELECT].AddOverlay("$IT_DATA/Icons/scrolldown.bmp", abs_area, true);  m_group_shown[IG_WO_SELECT] = false;  // number selector, a grid of numbers  double xmargin = .08;  double ymargin = .08;  ver_gap = .023;  hor_gap = .03;  int num_per_col = 5; // must be >1  width = (1.0-2*xmargin-(num_per_col-1)*ver_gap)/(double)num_per_col;  height = width*.85;  for (int number=0; number<18; number++) {    const int buflen = 16;    char buf[buflen];//    StringCbPrintfA(buf, buflen*sizeof(char), "%d", (number+1));
    sprintf(buf, "%d", (number+1));    string filename = "$IT_DATA/Icons/number";    filename.append(buf).append(".bmp");    // where?    int xpos = number%num_per_col;    int ypos = number/num_per_col;    vr_left = xmargin+xpos*(ver_gap+width);    vr_top = ymargin+ypos*(hor_gap+height);    abs_area = AbsoluteArea(vr_left, vr_top, vr_left+width, vr_top+height);    m_icon_groups[IG_NUM_SELECT].AddOverlay(filename, abs_area, true);  }  m_group_shown[IG_NUM_SELECT] = false;  // hand pointer  abs_area = AbsoluteArea(0, 0, 0.18, 0.18);  m_icon_groups[IG_HAND_POINTER].AddOverlay("$IT_DATA/Icons/hand_pointer.bmp", abs_area, false);  m_group_shown[IG_HAND_POINTER] = false;  // hand pointer  abs_area = AbsoluteArea(0.67, 0.47, 0.87, 0.78);  m_icon_groups[IG_HAND_FLAT].AddOverlay("$IT_DATA/Icons/hand_flat.bmp", abs_area, false);  m_group_shown[IG_HAND_FLAT] = false;  DbgLog((LOG_CUSTOM1, 4, "... done loading icons"));
}

⌨️ 快捷键说明

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