N
nightnoise
Unregistered / Unconfirmed
GUEST, unregistred user!
如题,我处理的图像是菌落图像,想对区域内菌株进行计数
目前我在图像上画选择区域的方法如下
procedure TMDIChild.DrawShape(TopLeft, BottomRight: TPoint; AMode: TPenMode);
begin
//rectangle, ellipse selection
with Image1.Canvas do begin
Pen.Mode := AMode;
Pen.Style := psDot;
Image1.Canvas.Brush.Style := bsClear;
case DrawingTool of
dtRectangle: Image1.Canvas.Rectangle(TopLeft.X, TopLeft.Y, BottomRight.X, BottomRight.Y);
dtEllipse: Image1.Canvas.Ellipse(TopLeft.X, TopLeft.Y, BottomRight.X, BottomRight.Y);
end;
end;
在DrawingTool := dtRectangle;的时候我可以很容易确定选择图像区域的边界,进行计数
但是DrawingTool := dtEllipse的时候该怎样确定边界呢?
我的初步设想是将Ellipse以外区域的象素值清空,或赋某一特定值,然后再对Ellipse内的菌株
计数,这样能减少数据计算量,但具体要实行还是不会,所以请大家指教.
(对象素赋值最好用Windows API或Pixel的方法,我对Scanline不熟悉,非常感谢)
目前我在图像上画选择区域的方法如下
procedure TMDIChild.DrawShape(TopLeft, BottomRight: TPoint; AMode: TPenMode);
begin
//rectangle, ellipse selection
with Image1.Canvas do begin
Pen.Mode := AMode;
Pen.Style := psDot;
Image1.Canvas.Brush.Style := bsClear;
case DrawingTool of
dtRectangle: Image1.Canvas.Rectangle(TopLeft.X, TopLeft.Y, BottomRight.X, BottomRight.Y);
dtEllipse: Image1.Canvas.Ellipse(TopLeft.X, TopLeft.Y, BottomRight.X, BottomRight.Y);
end;
end;
在DrawingTool := dtRectangle;的时候我可以很容易确定选择图像区域的边界,进行计数
但是DrawingTool := dtEllipse的时候该怎样确定边界呢?
我的初步设想是将Ellipse以外区域的象素值清空,或赋某一特定值,然后再对Ellipse内的菌株
计数,这样能减少数据计算量,但具体要实行还是不会,所以请大家指教.
(对象素赋值最好用Windows API或Pixel的方法,我对Scanline不熟悉,非常感谢)