下面的代码(来自此主题:How to use Delphi 2010's new WIC capability on Canon files?)将WIC图像打开到BitMap中。
但是,如果WIC像素值的动态范围很大,则此代码会丢失大量信息,因为它必须将宽动态范围缩放到Bitmap像素可以容纳的低范围内。
procedure TForm116.Button1Click(Sender: TObject);
var
WIC: TWICImage;
begin
WIC := TWICImage.Create;
try
WIC.LoadFromFile('MyFilename.raw');
Image1.Picture.Graphic.Assign(WIC);
finally
WIC.Free;
end;
end;
有人能给我看一些示例代码,让我直接从TWICImage读取像素值,这样我就可以访问图像数据而不会丢失信息吗?我需要每个像素的强度(灰度)值,如果没有直接可用,也可以从RGB值计算出来?
类似的东西:
var
PixelValue: Integer; // Grayscale
for Row := 0 to WIC.Width do
for Col := 0 to WIC.Height
PixelValue := WIC.GetPixelValue(Row, Col);
答案 0 :(得分:0)
您应该能够assign()
TWICImage到TBitmap,然后访问位图的Pixels或ScanLine属性以获取像素数据。就像加载JPEG时一样。
例如(未经测试的伪代码)
w := TWICImage.Create();
w.LoadFromFile(...)
b := TBitmap.Create;
b.assign( w);
ptr := b.ScanLine[...]