C++builder处理图像的旋转与边界识别的问题(200分)

  • 主题发起人 qiluzhizi
  • 开始时间
Q

qiluzhizi

Unregistered / Unconfirmed
GUEST, unregistred user!
本人急需用C++BUILDER或DELPHI进行有关图像的旋转与边界识别的一些问题,(最好是C++BUILDER)希望各位高手帮忙,程序里要用到scanline函数,希望提供原代码进行参考(希望注释多一点),拜托拜托,我的E--mail是qiluzhizi@163.net,这里再次拜托了。
 
Z

zensst

Unregistered / Unconfirmed
GUEST, unregistred user!
我对这类问题感兴趣;但水平不高。另外不知ScanLine是什么函数。
对于图象处理,就是对点阵处理,可以当作一个二维数组处理(X,Y,Color)。
旋转时,需要用三角函数计算新坐标(X,Y),(但仅此不够,否则图象要扭曲);
同时,要将Color向四周迭加,处理边缘。
对于边界识别,应该是对Color进行处理;将相近的Color值重新归组。然后判断
同组Color之间的距离,小于某个值时,可以认为是同一个边界。
就知道这些。
 
G

g622

Unregistered / Unconfirmed
GUEST, unregistred user!
这样的东西资料很多,建议你搜索一下.
图形学,图像处理里都有讲到
 
M

mikecool

Unregistered / Unconfirmed
GUEST, unregistred user!
旋转好像有控件提供边缘估计要看图形学了:)
 
W

wangbian

Unregistered / Unconfirmed
GUEST, unregistred user!
有人这样处理其中进行了color的叠加
procedure RotateBmp(bmp: TBitmap;
Center: TPoint;
angle: Integer);
var
tmpbmp: TBitmap;
i, j, x, y, px, py: Integer;
cAngle, sAngle: extended;
p1, p2: Pchar;
begin
while angle < 0do
angle := angle + 360;
angle := angle mod 360;
sAngle := sin(- angle * pi / 180);
cAngle := cos(- angle * pi / 180);
tmpbmp := tbitmap.create;
tmpbmp.assign(bmp);
for i := 0 to tmpbmp.height - 1do
begin
p1 := pchar(tmpbmp.scanline);
py := 2 * (i - center.y) - 1;
for j := 0 to tmpbmp.width - 1do
begin
px := 2 * (j - center.x) - 1;
x := (round(px * cAngle - py * sAngle) - 1) div 2 + center.x;
y := (round(px * sAngle + py * cAngle) - 1) div 2 + center.y;
if (x>=0) and (x=0) and (y<=tmpbmp.height) then
begin
p2 := pchar(bmp.scanline[y]) + x * 3;
move(p1^, p2^, 3);
end;
inc(p1, 3);
end;
end;
end;
如果你能通过获取hdc信息的话,是可以改变系统的默认坐标的
 
W

wjiachun

Unregistered / Unconfirmed
GUEST, unregistred user!
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
571
import
I
顶部