图像识别怎么做----腐蚀篇(100分)

  • 主题发起人 主题发起人 cqbaobao
  • 开始时间 开始时间
C

cqbaobao

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TFrmCapture.fs(cdfB, cdfG, cdfR: integer);
const
fsUnit = 2;
var
i, j, m: integer;
p1, p: PByteArray;
w, h: integer;
begin
w := bmpCap.Width;
h := bmpCap.Height;

bmpFspz.Assign(bmpCap);

// 腐蚀
for i := 0 to h - 1 do
begin
p1 := bmpCap.ScanLine;
p := bmpFspz.ScanLine;
j := 3;
while j < (w - 1) * 3 do
begin
// 1 * 3 腐蚀, 预先置为白色,待挖去
p[j] := 255;
p[j + 1] := 255;
p[j + 2] := 255;
for m := -1 to fsUint - 1 do
if (abs(p1[j + m * 3] - colBakB) > cdfB) or
(abs(p1[j + m * 3 + 1] - colBakG) > cdfG) or
(abs(p1[j + m * 3 + 2] - colBakR) > cdfR) then
begin
// 置为黑色,留下
p[j] := 0;
p[j + 1] := 0;
p[j + 2] := 0;
break;
end;

inc(j, 3);
end;
end;
end;
bmpCap的底色为蓝色,24位图,以上代码对bmpCap进行腐蚀,
colBakB,colBakG,colBakR为背景某点颜色三个分量,
cdfB,cdfG,cdfR它们的值如何给,蓝色的背景是否对cdfB要大一点呢?
 
卷起千堆雪ty:
帮我改改好吗?急用!!!
 
1、不明白你的目的!
2、若要真的进行图像识别,这点程序可不够!?
 
to: James

1.我有蓝色背景的照片(其实也可是其他颜色的背景,但都不是纯色,有不大的杂斑),
前面有一人,我希望将人从背景中取出,这段代码是第一步,用腐蚀来处理,将人像
区域填充成黑色,但所用到的三个参数怎么调整效果都不好,
我在想,这三个参数(cdfB,cdfG,cdfR)是否有一个对环境影响最大,如蓝色背景就是
cdfB,

2.你做过这种东东吗,请千万帮帮我,我快疯了!!
 
作这种工作,即使你不一定用到,但一定要知道的是:数学形态学。
形态学的膨胀和腐蚀算法就是用来干这个的。
超星www.ssreader.com上有几本书关于形态学的书,
在其主页上搜索一下就知道了。
 
多人接受答案了。
 
后退
顶部