for i:= 0 to 255 do
begin
lplogpal.palPalEntry[i].peRed :=i;
lplogpal.palPalEntry[i].peGreen :=i;
lplogpal.palPalEntry[i].peBlue :=i;
histogram[i] := 0;
end;
bitmap.Palette := CreatePalette(pLogPalette(lpLogPal)^);
FreeMem(lpLogPal,sizeof(TLOGPALETTE) + ((255) * sizeof(TPALETTEENTRY)));
for i := 0 to (bitmapSrc.Height -1) do
begin
ppSrc := bitmapSrc.ScanLine[i];
ppDest := bitmap.ScanLine[i];
j:=0;
while j <= (bitmapSrc.Width - 1) do
begin
ppDest[j] := trunc(ppSrc[j*PixelNum]*0.114 + ppSrc[j*pixelNum + 1]*0.587
+ ppSrc[j*PixelNum + 2]*0.299+0.5);
Inc(j);
end;
// bitmapSrc.Assign(bitmap);
// ptr:=bitmap.ScanLine[i];
// for n := 0 to (bitmap.Width-1) do
// begin
// histogram[ptr[n]]:= histogram[ptr[n]]+1 ;
// end;
end;
bitmapSrc.Assign(bitmap); try
for m:= 0 to (bitmap.Height-1) do
begin
ptr:=bitmap.ScanLine[m]; for n := 0 to (bitmap.Width-1) do
begin
histogram[ptr[n]]:= histogram[ptr[n]]+1 ;
end;
end;
except end;
想精简下 变成一个循环 但是想不明白
begin
lplogpal.palPalEntry[i].peRed :=i;
lplogpal.palPalEntry[i].peGreen :=i;
lplogpal.palPalEntry[i].peBlue :=i;
histogram[i] := 0;
end;
bitmap.Palette := CreatePalette(pLogPalette(lpLogPal)^);
FreeMem(lpLogPal,sizeof(TLOGPALETTE) + ((255) * sizeof(TPALETTEENTRY)));
for i := 0 to (bitmapSrc.Height -1) do
begin
ppSrc := bitmapSrc.ScanLine[i];
ppDest := bitmap.ScanLine[i];
j:=0;
while j <= (bitmapSrc.Width - 1) do
begin
ppDest[j] := trunc(ppSrc[j*PixelNum]*0.114 + ppSrc[j*pixelNum + 1]*0.587
+ ppSrc[j*PixelNum + 2]*0.299+0.5);
Inc(j);
end;
// bitmapSrc.Assign(bitmap);
// ptr:=bitmap.ScanLine[i];
// for n := 0 to (bitmap.Width-1) do
// begin
// histogram[ptr[n]]:= histogram[ptr[n]]+1 ;
// end;
end;
bitmapSrc.Assign(bitmap); try
for m:= 0 to (bitmap.Height-1) do
begin
ptr:=bitmap.ScanLine[m]; for n := 0 to (bitmap.Width-1) do
begin
histogram[ptr[n]]:= histogram[ptr[n]]+1 ;
end;
end;
except end;
想精简下 变成一个循环 但是想不明白
for i:= 0 to 255 do
begin
lplogpal.palPalEntry[i].peRed :=i;
lplogpal.palPalEntry[i].peGreen :=i;
lplogpal.palPalEntry[i].peBlue :=i;
histogram[i] := 0;
end;
bitmap.Palette := CreatePalette(pLogPalette(lpLogPal)^);
FreeMem(lpLogPal,sizeof(TLOGPALETTE) + ((255) * sizeof(TPALETTEENTRY)));
for i := 0 to (bitmapSrc.Height -1) do
begin
ppSrc := bitmapSrc.ScanLine[i];
ppDest := bitmap.ScanLine[i];
j:=0;
while j <= (bitmapSrc.Width - 1) do
begin
ppDest[j] := trunc(ppSrc[j*PixelNum]*0.114 + ppSrc[j*pixelNum + 1]*0.587
+ ppSrc[j*PixelNum + 2]*0.299+0.5);
histogram[ppDest[j]]:= histogram[ppDest[j]]+1 ;
Inc(j);
end;
// bitmapSrc.Assign(bitmap);
// ptr:=bitmap.ScanLine[i];
// for n := 0 to (bitmap.Width-1) do
// begin
// histogram[ptr[n]]:= histogram[ptr[n]]+1 ;
// end;
end;
bitmapSrc.Assign(bitmap);
{try
for m:= 0 to (bitmap.Height-1) do
begin
ptr:=bitmap.ScanLine[m];
for n := 0 to (bitmap.Width-1) do
begin
histogram[ptr[n]]:= histogram[ptr[n]]+1 ;
end;
end;
except
end;}