再加70分,问两个图像处理的问题(关于二值化和图像校正) (80分)

  • 主题发起人 主题发起人 冰冷的雨
  • 开始时间 开始时间

冰冷的雨

Unregistered / Unconfirmed
GUEST, unregistred user!
[:(]我在Form1上放了两个Panel、两个image和两个label,分别取名为paRude、imgRude、
lbRudeMark,以及paPreview、imgpreview、lbpreviewMark。前三个控件完全重叠,
后三个控件也一样(主要是为了控制image的漫游)。并设置两个image的AutoSize为true.
然后在程序中这样用:
procedure TForm1.Button2Click(Sender: TObject);
var
rt:TRect;
bmp:TBitmap;
begin
....
with imgRude do
rt := rect(Left,Top,width,height);
bmp := TBitmap.Create;
bmp.Width := imgRude.Width;
bmp.Height := imgRude.Height;
bmp.Canvas.Rectcopy(rt,imgRude,rt);
... // 对bmp灰度化、二值化、pf24bit转换至pf1bit
imgPreview.Canvas.Draw(0,0,bmp);
// 这一句或者用imgPreview.Canvas.Rectcopy(rt,bmp.Canvas,rt);也一样
.....
end;
问题出来了:当imgRude上的图像比paRude大时,用漫游可以看到整个图像;但按下Button2
之后,图像并没有完全到imgPreview上去,超出PaPreview范围的部分都被裁掉了,我无法
把图像取全。请问是什么原因?
 
看了一下没看明白。
 
StretchDraw()
 
这位兄弟,你是不是在做一个ACDSEE一样的东西?
 
呵呵,不是的,我是在做一个票证版面分析和识别的东西(当然,有些功能象ACDSEE,
也有些功能象PHOTOSHOP的“图像”菜单和“选择”菜单)。
这个问题我自己解决了。在imgRude装入图片后,来一句:
imgPreview.Picture.bitmap.Assign(imgRude.Picture.bitmap);
就一切OK了:)

再加70分,问两个问题:
1、有没有求单值二值化阀值的好算法(我现在用的是手工调整阀值)?
2、如何判断扫描时是否有角度偏差?
 
多人接受答案了。
 
后退
顶部