请问如何遍历bmp图片的所有象素(二值图),在线等!
如图,我有一段代码
function MyScout(Bitmap: TBitmap;Dataset :Tdataset):Boolean;
var X, Y: integer;
O: pByteArray;
newbmp: TBitmap;
begin
newbmp := TBitmap.Create;
newbmp.PixelFormat := bitmap.PixelFormat;
newbmp.Assign(bitmap);
for Y := 0 to newbmp.Height - 1 do
begin
O := bitmap.ScanLine[Y];
for X := 0 to newbmp.Width - 1 do
begin
if o[x]=255 then //白色点
begin
//处理代码
end;
end;
end;
end;
好像这个newbmp.width 不是o数组的下标上限
而且我在画图程序里大概确定第一个白点的位置是(16,12),通过上面的代码查找变成了(51,12)
我是delphi新手,处理bmp图片也是昨天才试试的
[解决办法]
我记得有个函数叫做PixPos(X,Y)
获取Pos上的Pix信息,但是不记得是不是BitMap类的了,可能是Canvas类
[解决办法]
if o[x]=255 then //白色点
begin
//处理代码
end;
判断白点不是这样的
把255改成clWhite
[解决办法]
看你的图像是什么格式的,24bit? 8bit? 如果是8bit,图像的颜色是基于调色板的,也不会是255。
[解决办法]
BMP格式的数据是逆序存储的,即在内存中最下面一行的数组在图像数据的最开始,所以你看下是不是有这个关系 newbmp.Width-51=16
还有从 for X := 0 to newbmp.Width - 1 do 这句似乎可以看出你的图像是8位色的。
[解决办法]
、、还有从 for X := 0 to newbmp.Width - 1 do 这句似乎可以看出你的图像是8位色的。
这个我说错了!
[解决办法]