Текущий архив: 2002.12.23;
Скачать: CL | DM;
Вниз
с неимоверной силой лезут 255 в данные Найти похожие ветки
← →
vilfred (2002-12-10 16:49) [0]При считывании яркости пикселя с картинки(высота и ширина 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.
Может быть дело в способе загрузки картинки? Или может быть надо взять цвет пикселя как-то по другому?
← →
Subfire © (2002-12-10 17:17) [1]mas глоюальная или локальная?
если локальная попробуй:
FillChar(mas,sizeof(mas),0);
← →
vilfred (2002-12-10 18:17) [2]да это я похоже с размерами массива наглючил че-то очень сильно... вроде как все теперь сходится. т.е. это моя ошибка.
Страницы: 1 вся ветка
Текущий архив: 2002.12.23;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.019 c