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);
}
Пример #2
0
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;
    }
}