FloodFill用法记述

函数说明如下:

{x,y:当前坐标
Color:针对该色彩执行填充事件
FillStyle:fsBorder(从当前位置开始填充,直到遇到Color),fsSurFace(当前底色和color相同时填充) }procedure TCanvas.FloodFill(X, Y: Integer; Color: TColor; FillStyle: TFillStyle);




示例代码

procedure TForm15.btn1Click(Sender: TObject);
const
  Points1: array[0..2] of TPoint =
    ((X:0; Y:0), (X:100; Y:100), (X:15; Y:50));
  Points2: array[0..2] of TPoint =
    ((X:0; Y:200), (X:100; Y:300), (X:50; Y:350));
begin
  self.Repaint;
  
  Canvas.Pen.Color := clred;
  canvas.Brush.Color:=clred;
  Canvas.Polygon(Points1);

  canvas.Brush.Color:=clgreen;
  Canvas.FloodFill(0,0,clred,fsSurface);


  Canvas.Pen.Color := clred;
  Canvas.Polygon(Points2);

  canvas.Brush.Color:=clgreen;
  Canvas.FloodFill(50,250,clred,fsBorder);

end;

procedure TForm15.btn2Click(Sender: TObject);
const
  Points3: array[0..3] of TPoint =
    ((X:0; Y:0), (X:100; Y:100), (X:15; Y:50), (X:0; Y:0));
  Points4: array[0..3] of TPoint =
    ((X:0; Y:200), (X:100; Y:300), (X:50; Y:350), (X:0; Y:200));
begin
  self.Repaint;

  Canvas.Pen.Color := clred;
  Canvas.Pen.Width := 2;
  Canvas.Polyline(Points3);
  canvas.Brush.Color:=clgreen;
  Canvas.FloodFill(0,0,clred,fsSurface);

  Canvas.Pen.Color := clred;
  Canvas.Polyline(Points4);
  canvas.Brush.Color:=clgreen;
  Canvas.FloodFill(50,280,clred,fsBorder);
end;


floodfill函数是一种图像处理算法,可以填充封闭区域,常用于图像分割、目标检测等领域。其使用方法如下: 1. 导入相关库:首先需要导入OpenCV库。可以使用以下代码导入: ```python import cv2 ``` 2. 读取图像:使用OpenCV中的imread函数读取需要处理的图像。例如: ```python img = cv2.imread("image.jpg") ``` 3. 选择填充起点:选择一个像素点作为起点,从该点开始进行填充。可以使用鼠标点击事件或手动指定像素点。 4. 调用floodfill函数:使用cv2.floodfill函数进行填充。该函数的参数包括待填充图像、填充起点、填充颜色、填充边界、低阈值、高阈值等。例如: ```python cv2.floodFill(img, mask, seed_point, (0, 0, 255), (8, 8, 8), (8, 8, 8), cv2.FLOODFILL_FIXED_RANGE) ``` 其中,img表示待填充图像,mask表示掩码图像,seed_point表示填充起点,(0,0,255)表示填充颜色,(8,8,8)表示低阈值和高阈值,cv2.FLOODFILL_FIXED_RANGE表示填充模式。 5. 显示结果:使用imshow函数显示填充结果。例如: ```python cv2.imshow("Result", img) cv2.waitKey(0) cv2.destroyAllWindows() ``` 完整代码示例: ```python import cv2 def floodfill(image, x, y): mask = np.zeros((image.shape[0] + 2, image.shape[1] + 2), np.uint8) cv2.floodFill(image, mask, (x, y), (0, 0, 255), (8, 8, 8), (8, 8, 8), cv2.FLOODFILL_FIXED_RANGE) if __name__ == '__main__': img = cv2.imread("image.jpg") cv2.namedWindow("image") cv2.setMouseCallback("image", on_mouse) while True: cv2.imshow("image", img) if cv2.waitKey(20) & 0xFF == 27: break cv2.destroyAllWindows() ``` 在此示例中,我们定义了一个floodfill函数,并在主函数中使用setMouseCallback函数绑定鼠标事件,当鼠标左键单击时,调用floodfill函数进行填充。最后使用imshow函数显示填充结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值