比如起点是图中蓝色的地方。
然后我要获取一段(长度不定的)黑白交接的坐标,图中我已经用红色线标记出来了。请问如何用代码实现?获取红色这个路线的所有坐标?求代码,或思路,谢谢。``````UP有分 结贴率100%
Image1.canvas.Pixels[1,1] 这样就是获取1,1坐标的颜色是 黑色
然后我要获取一段(长度不定的)黑白交接的坐标,图中我已经用红色线标记出来了。请问如何用代码实现?获取红色这个路线的所有坐标?求代码,或思路,谢谢。``````UP有分 结贴率100%
Image1.canvas.Pixels[1,1] 这样就是获取1,1坐标的颜色是 黑色
解决方案 »
- 关于IdHttp的Cookie问题,无语
- 怎样将ListView中的内容拷贝到剪贴板?
- FastReport3的分栏问题!跪求高手解急~~~~~~~~~~~~~~
- 求助编程思路
- 如何动态的在,DBChart中加入series,并且设置线条的颜色、设置数据库中的字短如何和x,y轴想连?
- 怎么能将一个文件,(什么文件都可以的)内容放到memo内急呀。高分。在线等
- dbcomobobox中的菜单项的问题!急!
- 如何区分我的隐射盘是本机的,还是网络上的?是网络上的那一台机器的?
- 请问XE5,XE6开发的安卓程序支持不支持intelX86芯片的设备
- 有没有浙江湖州或杭州的朋友?
- 使用indy TCP建立连接,远程服务器直接关闭连接?
- 来谈谈ClientDataSet的OptionalParam使用方法吧!
具体的你看下数字图像处理的书。 《Delphi数字图像处理及高级应用》
var
b0, b1: Tbitmap;
i, j: Integer;
p1, p2, p3, p4: pbyteArray;
begin
b0 := Tbitmap.Create;
b1 := Tbitmap.Create;
b0.Assign(Image1.Picture.Bitmap);
b1.Assign(Image1.Picture.Bitmap);
b0.PixelFormat := pf24bit;
b1.PixelFormat := pf24bit;
for i := 1 to b0.Height - 2 do
begin
p1 := b0.ScanLine[i - 1];
p2 := b0.ScanLine[i];
p3 := b0.ScanLine[i + 1];
p4 := b1.ScanLine[i];
for j := 1 to b0.Width - 2 do
begin
if (p2[3 * j + 2] = 0) and (p2[3 * j + 1] = 0) and (p2[3 * j] = 0) then
begin if ((p2[3 * (j - 1) + 2] = 0) and (p2[3 * (j - 1) + 1] = 0) and
(p2[3 * (j - 1)] = 0)) and
((p2[3 * (j + 1) + 2] = 0) and (p2[3 * (j + 1) + 1] = 0) and
(p2[3 * (j + 1)] = 0)) and
((p1[3 * (j + 1) + 2] = 0) and (p1[3 * (j + 1) + 1] = 0) and
(p1[3 * (j + 1)] = 0)) and
((p1[3 * (j) + 2] = 0) and (p1[3 * (j) + 1] = 0) and (p1[3 * (j)]
= 0)) and
((p1[3 * (j - 1) + 2] = 0) and (p1[3 * (j - 1) + 1] = 0) and
(p1[3 * (j - 1)] = 0)) and
((p3[3 * (j - 1) + 2] = 0) and (p3[3 * (j - 1) + 1] = 0) and
(p3[3 * (j - 1)] = 0)) and
((p3[3 * (j) + 2] = 0) and (p3[3 * (j) + 1] = 0) and (p3[3 * (j)]
= 0)) and
((p3[3 * (j + 1) + 2] = 0) and (p3[3 * (j + 1) + 1] = 0) and
(p3[3 * (j + 1)] = 0)) then
begin
p4[3 * j + 2] := 255;
p4[3 * j + 1] := 255;
p4[3 * j] := 255;
end;
end; end;
Image1.Picture.Bitmap.Assign(b1);
end;
b1.Free;
b0.Free;