Esempio n. 1
0
void CvFaceElement::FindRects(IplImage* img, IplImage* thresh, int nLayers, int dMinSize)
{
    FindContours(img, thresh, nLayers, dMinSize / 4);
    if (0 == m_seqRects->total)
        return;
    Energy();
    cvSeqSort(m_seqRects, CompareEnergy, NULL);
    CvTrackingRect* pR = (CvTrackingRect*)cvGetSeqElem(m_seqRects, 0);
    if (m_seqRects->total < 32)
    {
        MergeRects(dMinSize / 8);
        Energy();
        cvSeqSort(m_seqRects, CompareEnergy, NULL);
    }
    pR = (CvTrackingRect*)cvGetSeqElem(m_seqRects, 0);
    if ((pR->iEnergy > 100 && m_seqRects->total < 32) || (m_seqRects->total < 16))
    {
        MergeRects(dMinSize / 4);
        Energy();
        cvSeqSort(m_seqRects, CompareEnergy, NULL);
    }
    pR = (CvTrackingRect*)cvGetSeqElem(m_seqRects, 0);
    if ((pR->iEnergy > 100 && m_seqRects->total < 16) || (pR->iEnergy > 200 && m_seqRects->total < 32))
    {
        MergeRects(dMinSize / 2);
        Energy();
        cvSeqSort(m_seqRects, CompareEnergy, NULL);
    }

}// void CvFaceElement::FindRects(IplImage* img, IplImage* thresh, int nLayers, int dMinSize)
//---------------------------------------------------------------------------
void TFormAmplifier::OnAfterResize()
{
  //Use
  {
    const std::vector<std::vector<TRect> > v(GetRectsGrid(ClientRect,9,1));
    //Resize bitmaps
    //ImageFader1->Picture->Bitmap->Height = MergeRects(v[4][2],v[6][2]).Height();
    //ImageFader1->Refresh();
    //Place bitmaps
    //Labels
    //Controls
    PlaceInCenter(ImageTapButtonPower,v[0][1]);
    PlaceInCenter(ImageTapButtonPlay,v[0][3]);
    PlaceInCenter(ImageTapButtonStop,v[0][4]);
    //Others
    //Displays
    PlaceInCenter(ImageLedPower,v[0][0]);
    PlaceInCenter(ImageLcdSymbolPlay,v[0][6]);
    PlaceInCenter(ImageAudioSignalL,v[0][7]);
    PlaceInCenter(ImageAudioSignalR,v[0][8]);
  }
  //Connect
  {
    const std::vector<std::vector<TRect> > v(GetRectsGrid(ClientRect,5,2));
    //Labels
    PlaceInCenter(LabelConnectOut,MergeRects(v[0][2],v[0][3]));
    //Connectors
    PlaceInCenter(ImageCinchFemaleOutL,v[1][2]);
    PlaceInCenter(ImageCinchFemaleOutR,v[1][3]);
    PlaceInCenter(ImagePlug220Power   ,v[1][4]);
  }
}
Esempio n. 3
0
void MSHCD(HAAR *m, const char* imagefile, const char* haarcasadefile)
{
	assert(sizeof(u8) == 1);
	assert(sizeof(u16) == 2);
	assert(sizeof(u32) == 4);
	assert(sizeof(u64) == 8);

	m->n_objects = 0;
	m->objects = (Rectangle**)malloc(MAX_OBJECTS * sizeof(Rectangle*));
	m->haarcascade.ScaleUpdate = 1.0/1.3;

	GetHaarCascade(haarcasadefile, &m->haarcascade); // get classifer from file
	GetIntergralImages(imagefile, &m->image);        // calculate integral image
#ifdef DO_CANNY_PURGE
	GetIntegralCanny(&m->image);    // calculate integral canny image
#endif

	HaarCasadeObjectDetection(m);   // start detection

	MergeRects(m, 1);               // merge found results
	PrintDetectionResult(m);        // show detection result

#ifdef WITH_OPENCV
	ShowDetectionResult(imagefile, m);
#endif
}
Esempio n. 4
0
STDMETHODIMP CSubPicExImpl::SetDirtyRectEx(CAtlList<CRect>* dirtyRectList)
{
    if(dirtyRectList!=NULL)
    {
        m_rectListDirty.RemoveAll();
        m_rcDirty.SetRectEmpty();

        POSITION tagPos = NULL;
        POSITION pos = dirtyRectList->GetHeadPosition();
        while(pos!=NULL)
        {
            m_rcDirty |= dirtyRectList->GetNext(pos);
        }
        MergeRects(*dirtyRectList, &m_rectListDirty);
        return S_OK;
    }
    return E_POINTER;
}
//---------------------------------------------------------------------------
void TFormAlesisMultimix8::OnAfterResize()
{
  //Use
  {
    const std::vector<TRect> v(GetRectsHorizontal(ClientRect,3));
    PlaceInCenter(ImageAudioSignal,v[2]);
    const std::vector<TRect> v1(GetRectsVertical(v[0],5));
    const std::vector<TRect> v2(GetRectsVertical(v[1],5));
    ImageFader1->Picture->Bitmap->Height = MergeRects(v1[1],v1[3]).Height();
    ImageFader1->Refresh();
    ImageFaderMaster->Picture->Bitmap->Height = MergeRects(v2[1],v2[3]).Height();
    ImageFaderMaster->Refresh();
    PlaceInCenter(ImageUse1  ,v1[0]);
    PlaceInCenter(ImageFader1,MergeRects(v1[1],v1[3]));
    PlaceInCenter(ImageUseMaster  ,v2[0]);
    PlaceInCenter(ImageFaderMaster,MergeRects(v2[1],v2[3]));
  }
  //Connect
  {
    const std::vector<TRect> v(GetRectsHorizontal(ClientRect,4));
    const std::vector<TRect> v0(GetRectsVertical(v[0],6));
    const std::vector<TRect> v1(GetRectsVertical(v[1],6));
    const std::vector<TRect> v2(GetRectsVertical(v[2],6));
    const std::vector<TRect> v3(GetRectsVertical(v[3],6));
    PlaceInCenter(ImageConnectMic   ,v0[1]);
    PlaceInCenter(ImageConnect1     ,v0[2]);
    PlaceInCenter(ImageConnectMaster,MergeRects(v1[1],v2[1]));
    PlaceInCenter(ImageConnectL     ,v1[2]);
    PlaceInCenter(ImageConnectR     ,v2[2]);
    PlaceInCenter(ImageConnectPower ,v3[2]);
    PlaceInCenter(ImageXlrFemaleMic1     ,MergeRects(v0[3],v0[4]));
    PlaceInCenter(ImageXlrMaleMasterLeft ,MergeRects(v1[3],v1[4]));
    PlaceInCenter(ImageXlrMaleMasterRight,MergeRects(v2[3],v2[4]));
    PlaceInCenter(ImageEuroMalePower     ,MergeRects(v3[3],v3[4]));
  }
}
Esempio n. 6
0
void nsRegion::SimplifyOutwardByArea(uint32_t aThreshold)
{

  pixman_box32_t *boxes;
  int n;
  boxes = pixman_region32_rectangles(&mImpl, &n);

  // if we have no rectangles then we're done
  if (!n)
    return;

  pixman_box32_t *end = boxes + n;
  pixman_box32_t *topRectsEnd = boxes+1;
  pixman_box32_t *topRects = boxes;

  // we need some temporary storage for merging both rows of rectangles
  nsAutoTArray<pixman_box32_t, 10> tmpStorage;
  tmpStorage.SetCapacity(n);
  pixman_box32_t *tmpRect = tmpStorage.Elements();

  pixman_box32_t *destRect = boxes;
  pixman_box32_t *rect = tmpRect;
  // find the end of the first span of rectangles
  while (topRectsEnd < end && topRectsEnd->y1 == topRects->y1) {
    topRectsEnd++;
  }

  // if we only have one row we are done
  if (topRectsEnd == end)
    return;

  pixman_box32_t *bottomRects = topRectsEnd;
  pixman_box32_t *bottomRectsEnd = bottomRects+1;
  do {
    // find the end of the bottom span of rectangles
    while (bottomRectsEnd < end && bottomRectsEnd->y1 == bottomRects->y1) {
      bottomRectsEnd++;
    }
    uint32_t totalArea = ComputeMergedAreaIncrease(topRects, topRectsEnd,
                                                   bottomRects, bottomRectsEnd);

    if (totalArea <= aThreshold) {
      // merge the rects into tmpRect
      rect = MergeRects(topRects, topRectsEnd, bottomRects, bottomRectsEnd, tmpRect);

      // copy the merged rects back into the destination
      topRectsEnd = CopyRow(destRect, tmpRect, rect);
      topRects = destRect;
      bottomRects = bottomRectsEnd;
      destRect = topRects;
    } else {
      // copy the unmerged rects
      destRect = CopyRow(destRect, topRects, topRectsEnd);

      topRects = bottomRects;
      topRectsEnd = bottomRectsEnd;
      bottomRects = bottomRectsEnd;
      if (bottomRectsEnd == end) {
        // copy the last row when we are done
        topRectsEnd = CopyRow(destRect, topRects, topRectsEnd);
      }
    }
  } while (bottomRectsEnd != end);


  uint32_t reducedCount = topRectsEnd - pixman_region32_rectangles(&this->mImpl, &n);
  // pixman has a special representation for
  // regions of 1 rectangle. So just use the
  // bounds in that case
  if (reducedCount > 1) {
    // reach into pixman and lower the number
    // of rects stored in data.
    this->mImpl.data->numRects = reducedCount;
  } else {
    *this = GetBounds();
  }
}
//---------------------------------------------------------------------------
void TFormSimpleSound4::OnAfterResize()
{
  //Use
  {
    const std::vector<std::vector<TRect> > v(GetRectsGrid(ClientRect,11,9));
    //Resize bitmaps
    ImageFader1->Picture->Bitmap->Height      = MergeRects(v[5][2],v[7][2]).Height();
    ImageFader2->Picture->Bitmap->Height      = MergeRects(v[5][3],v[7][3]).Height();
    ImageFader3->Picture->Bitmap->Height      = MergeRects(v[5][4],v[7][4]).Height();
    ImageFader4->Picture->Bitmap->Height      = MergeRects(v[5][5],v[7][5]).Height();
    ImageFaderMaster->Picture->Bitmap->Height = MergeRects(v[5][6],v[7][7]).Height();
    ImageFader1->Refresh();
    ImageFader2->Refresh();
    ImageFader3->Refresh();
    ImageFader4->Refresh();
    ImageFaderMaster->Refresh();
    //Place bitmaps
    //Labels
    PlaceInCenter(LabelUse1,v[0][2]);
    PlaceInCenter(LabelUse2,v[0][3]);
    PlaceInCenter(LabelUse3,v[0][4]);
    PlaceInCenter(LabelUse4,v[0][5]);
    PlaceInCenter(LabelUseGain,MergeRects(v[1][0],v[1][1]));
    PlaceInCenter(LabelUseAux1,MergeRects(v[2][0],v[2][1]));
    PlaceInCenter(LabelUseAux2,MergeRects(v[3][0],v[3][1]));
    PlaceInCenter(LabelUsePfl,MergeRects(v[4][0],v[4][1]));
    PlaceInCenter(LabelUseMaster,MergeRects(v[4][6],v[4][7]));
    PlaceInCenter(LabelUseSend,MergeRects(v[1][6],v[1][7]));
    PlaceInCenter(LabelUseSimpleSound4,MergeRects(v[0][8],v[1][10]));
    //Controls
    //#1
    PlaceInCenter(ImageDialGain1,v[1][2]);
    PlaceInCenter(ImageDialAux1_1,v[2][2]);
    PlaceInCenter(ImageDialAux2_1,v[3][2]);
    PlaceInCenter(ImagePressButtonPfl1,v[4][2]);
    PlaceInCenter(ImageFader1,MergeRects(v[5][2],v[7][2]));
    //#2
    PlaceInCenter(ImageDialGain2,v[1][3]);
    PlaceInCenter(ImageDialAux1_2,v[2][3]);
    PlaceInCenter(ImageDialAux2_2,v[3][3]);
    PlaceInCenter(ImagePressButtonPfl2,v[4][3]);
    PlaceInCenter(ImageFader2,MergeRects(v[5][3],v[7][3]));
    //#3
    PlaceInCenter(ImageDialGain3,v[1][4]);
    PlaceInCenter(ImageDialAux1_3,v[2][4]);
    PlaceInCenter(ImageDialAux2_3,v[3][4]);
    PlaceInCenter(ImagePressButtonPfl3,v[4][4]);
    PlaceInCenter(ImageFader3,MergeRects(v[5][4],v[7][4]));
    //#4
    //Channel 4 has no gain
    PlaceInCenter(ImageDialAux1_4,v[2][5]);
    PlaceInCenter(ImageDialAux2_4,v[3][5]);
    PlaceInCenter(ImagePressButtonPfl4,v[4][5]);
    PlaceInCenter(ImageFader4,MergeRects(v[5][5],v[7][5]));
    //Others
    PlaceInCenter(ImageDialSendAux1,MergeRects(v[2][6],v[2][7]));
    PlaceInCenter(ImageDialSendAux2,MergeRects(v[3][6],v[3][7]));
    PlaceInCenter(ImageFaderMaster,MergeRects(v[5][6],v[7][7]));
    //Displays
    PlaceInCenter(ImageAudioSignal,MergeRects(v[2][8],v[7][10]));
  }
  //Connect
  {
    const std::vector<std::vector<TRect> > v(GetRectsGrid(ClientRect,6,5));
    //Labels
    PlaceInCenter(LabelConnectMic1  ,v[0][0]);
    PlaceInCenter(LabelConnect1     ,v[1][0]);
    PlaceInCenter(LabelConnectMic2  ,v[0][1]);
    PlaceInCenter(LabelConnect2     ,v[1][1]);
    PlaceInCenter(LabelConnectMic3  ,v[0][2]);
    PlaceInCenter(LabelConnect3     ,v[1][2]);
    PlaceInCenter(LabelConnect4     ,v[1][3]);
    PlaceInCenter(LabelConnectAux1  ,v[3][4]);
    PlaceInCenter(LabelConnectAux2  ,v[3][5]);
    PlaceInCenter(LabelConnectMaster,MergeRects(v[0][4],v[0][5]));
    PlaceInCenter(LabelConnectL     ,v[1][4]);
    PlaceInCenter(LabelConnectR     ,v[1][5]);
    PlaceInCenter(LabelConnectPower ,MergeRects(v[4][1],v[4][2]));;
    //Connectors
    PlaceInCenter(ImageXlrFemaleMic1     ,MergeRects(v[2][0],v[3][0]));;
    PlaceInCenter(ImageXlrFemaleMic2     ,MergeRects(v[2][1],v[3][1]));;
    PlaceInCenter(ImageXlrFemaleMic3     ,MergeRects(v[2][2],v[3][2]));;
    PlaceInCenter(ImageCinchFemaleWhite4 ,v[2][3]);
    PlaceInCenter(ImageCinchFemaleRed4   ,v[3][3]);
    PlaceInCenter(ImageJackFemaleAux1    ,v[4][4]);
    PlaceInCenter(ImageJackFemaleAux2    ,v[4][5]);
    PlaceInCenter(ImageXlrMaleMasterLeft ,v[2][4]);
    PlaceInCenter(ImageXlrMaleMasterRight,v[2][5]);
    PlaceInCenter(ImageEuroMalePower     ,v[4][0]);
  }
}