void roiDetector::getROILevelPyr(int level, int xc, int yc, int w, int h, RoboCompVision::imgType & img) { int xl, yl; int scale; IppiSize roiSize; Ipp8u * iniRoi; scale=(int)pow(2,level); xl=xc/scale-w/2; yl=yc/scale-h/2; roiSize.width=w; roiSize.height=h; img.resize(w*h); iniRoi=&((*LecpiramideG)[level][yl*sizePir[level].width+xl]); ippiCopy_8u_C1R(iniRoi,sizePir[level].width,&(img[0]),w,roiSize); }
void CDemoDib::SetBits_Pixel_C1(CImage* image, Ipp8u* dst, int dstStep, BOOL bOne) { void* src = image->GetDataPtr(); int srcStep = image->Step(); IppiSize size = {image->Width(), image->Height()}; Ipp8u* tmp = NULL; if (image->Depth() != 8) { tmp = new Ipp8u[size.width*size.height]; int tmpStep = size.width; switch (image->Type()) { case pp16u: case pp16s: ippiScale_16u8u_C1R((Ipp16u*)src, srcStep, tmp, tmpStep, size, ippAlgHintFast); break; case pp32s: case pp32u: ippiScale_32s8u_C1R((Ipp32s*)src, srcStep, tmp, tmpStep, size, ippAlgHintFast); break; case pp32f: { Ipp32f vmin, vmax; GetFloatLimits(image, vmin, vmax); ippiScale_32f8u_C1R((Ipp32f*)src, srcStep, tmp, tmpStep, size, vmin, vmax); } break; } src = tmp; srcStep = tmpStep; } if (bOne) { ippiCopy_8u_C1R((Ipp8u*)src,srcStep,dst,dstStep,size); } else { for (int c=0; c<3; c++) { ippiCopy_8u_C1C3R((Ipp8u*)src,srcStep,dst,dstStep,size); dst++; } } if (tmp) delete[] tmp; }
void roiDetector::getROIWholePyr(int xc, int yc, int w, int h, RoboCompVision::imgType & img) { int i, xl, yl; int scale, posPyr=0; IppiSize roiSize; Ipp8u * iniRoi; roiSize.width=w; roiSize.height=h; img.resize(w*h*(params.pyrLevels)); for (i=0; i<params.pyrLevels; i++) { scale=(int)pow(2,i); xl=xc/scale-w/2; yl=yc/scale-h/2; iniRoi=&((*LecpiramideG)[i][yl*sizePir[i].width+xl]); ippiCopy_8u_C1R(iniRoi,sizePir[i].width,&(img[posPyr]),w,roiSize); posPyr+=w*h; } }