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