![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
с неимоверной силой лезут 255 в данные
vilfred © (2002-12-10 16:49:00)При считывании яркости пикселя с картинки(высота и ширина VidH и VidW соответственно) в двумерный массив:
const VidH=255; VidW=377;
....
if OpenDialog1.Execute then
begin
BitMap1 := TBitMap.Create;
BitMap2 := TBitMap.Create;
try
BitMap1.LoadFromFile(OpenDialog1.FileName);
BitMap2.Assign(BitMap1);
BitMap2.Dormant;
BitMap2.FreeImage;
Image3.Canvas.Draw(0,0,BitMap2);
BitMap2.Monochrome := true;
BitMap2.ReleaseHandle;
for x:=0 to VidH-1 do begin
ee:=x;
for y:=0 to VidW-1 do begin
mas[x][y]:=byte(Image3.Canvas.Pixels[x,y])// and $ff);
end;
end;
Canvas.TextOut(100,295,
IntToStr(byte(Image3.Canvas.Pixels[112,160] and $ff)));
finally
BitMap1.Free;
BitMap2.Free;
end;
Graphic;
end;
каждая строка начинает заполняться значением 255 на 241 шаге цикла, когда заполняю массив mas, т.е. недостача данных выходит ну и соответственно все идет лесом :(( ...
Но, если я делаю одномерный массив(и соответственно цикл по этому делу один) строчкой mas[x]:=byte(Image3.Canvas.Pixels[x,150]) вместо показанной mas[x][y]:=byte(Image3.Canvas.Pixels[x,y]), то заполнение данных происходит нормально, т.е. 255 нигде не появляются. Картинка нормальная, не битая, содержит 255 градаций серого. В той точке изображения где беру при помощи byte(Image3.Canvas.Pixels[x,y]) нет значения 255, т.е. не белый цвет... т.е. в массиве на данной строке и в данном столбце не должно быть значения 255.
Может быть дело в способе загрузки картинки? Или может быть надо взять цвет пикселя как-то по другому?
vilfred (2002-12-10 18:17:00) [1]да это я похоже с размерами массива наглючил че-то очень сильно... вроде как все теперь сходится. т.е. это моя ошибка.
Subfire (2002-12-10 17:17:00) [2]mas глоюальная или локальная?
если локальная попробуй:
FillChar(mas,sizeof(mas),0);