Der folgende Code ist Teil eines Flankenerfassungsprogramm:die Suche nach Möglichkeiten, um diesen Code zu optimieren
void detect_optimized(int width, int height, int threshold)
{
int x, y;
int tmp;`
int w = width--;
int h = height--;
for (y = 1; y < w; y++)
for (x = 1; x < h; x++)
{
tmp = mask_product(mask,a,x,y,0);
if (tmp>255)
tmp = 255;
if (tmp<threshold)
tmp = 0;
c[x][y][0] = 255-tmp;
tmp = mask_product(mask,a,x,y,1);
if (tmp>255)
tmp = 255;
if (tmp<threshold)
tmp = 0;
c[x][y][1] = 255-tmp;
tmp = mask_product(mask,a,x,y,2);
if (tmp>255)
tmp = 255;
if (tmp<threshold)
tmp = 0;
c[x][y][2] = 255-tmp;
}
}
Ich habe mit dem folgenden Code zu implementieren versucht, blockierte aber ich bin nicht sicher, wie es in diesem Einsatz Fall.
Sehr gering, aber Sie können 'else if' für das zweite' if' in jedem Paar verwenden. – Barmar
Ich gehe davon aus, dass 'threshold' immer kleiner als 255 sein sollte. – Barmar
Warum' int w = width -; 'und dann keine weitere Verwendung für' width' und daher kein Punkt dekrementieren? Geringe Effizienz durch Verwendung von 'width' und' height' als Schleifengrenzvariablen und Entfernen von 'w' und' h' wie 'for (y = 1; y