Welcome, guest! Login / Register - Why register?
Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)

Paste

Pasted as C++ by MonoBOY ( 15 years ago )
void imageArea::createFilter3(QImage * source, QImage * dest){
    float pix, vk, tvk;
    int tk, nx, ny;
    // позиции окна 3x3 относительно центра окна 5x5
    int pos[4][3] = {{0,-2,0},{0,0,0},{-2,0,0},{-2,-2,0}};
    int height = source->height()-1;
    int width = source->width()-1;
    for (int y = 0; y <= height; ++y) {
        QRgb *scanLineN = (QRgb *)source->scanLine(y);
        for (int x = 0; x <= width; ++x){
            vk=qRed(scanLineN[x]);
            tk=0;
            for (int k=0; k<4;k++){
                tvk=0;
                pos[k][2]=0;
                for (int kx=0; kx<3; kx++){
                    for (int ky=0;ky<3;ky++){
                        nx=calcAbsCoord(x+ky+pos[k][0], width);
                        ny=calcAbsCoord(y+ky+pos[k][1], height);

                        pos[k][2]+=qRed(source->pixel(nx,ny));
                        tvk+=(qRed(scanLineN[x])-pos[k][2]);
                    }
                }
                if (tvk<vk) {vk=tvk; tk=k;}
            }
            pix=(pos[tk][2])/9;
            dest->setPixel(x,y,qRgb(pix,pix,pix));
        }
    }
}

 

Revise this Paste

Your Name: Code Language: