找回密码
 立即注册

QQ登录

只需一步,快速开始

mcwong

注册会员

2

主题

6

帖子

18

积分

注册会员

积分
18

活字格认证

最新发帖
mcwong
注册会员   /  发表于:2015-9-25 17:51  /   查看:4745  /  回复:4
你好,

我想請問 LEADTOOLS 怎樣可以偵測 影像文件在特定位置內存在直線及線框? 如有, 能否提供相關資類? 謝謝


MC

4 个回复

倒序浏览
frank.zhang
社区贡献组   /  发表于:2015-9-28 17:09:00
沙发
您好,
非常抱歉,让您久等了。
经过验证,LEADTOOLS支持线条的检测。
有一个随机安装的实例程序
LEADTOOLS 19\Examples\DotNet\CS\GrayScaleDemo

在图中所示位置:



可以选择垂直或者水平方向。
需要指出的是,LEADTOOLS会将所有的线条检测出来,包括文字当中的横线。

参考实现的代码:
  1. using Leadtools.Services;
  2. using leadtools.services.datacontracts._2009._01;
  3. using leadtools.services.raster.datacontracts._2009._01;
  4. using leadtools.services.imageprocessing.datacontracts._2009._01;

  5. public void EdgeDetectorExample()
  6. {
  7.    EffectsProcessingServiceClient client = new EffectsProcessingServiceClient();
  8.    RawBinaryData sourceBinaryData = new RawBinaryData();
  9.    sourceBinaryData.Data = File.ReadAllBytes(Path.Combine(LEAD_VARS.ImagesDir,"image1.cmp"));

  10.    RasterConvertOptions convertOptions = new RasterConvertOptions();

  11.    convertOptions.Source = sourceBinaryData;
  12.    convertOptions.Destination = null;
  13.    convertOptions.Format = RasterImageFormat.Bmp;
  14.    convertOptions.FirstPage = 1;
  15.    convertOptions.LastPage = 1;
  16.    convertOptions.BitsPerPixel = 24;
  17.    convertOptions.QualityFactor = 2;

  18.    EdgeDetectorRequest request = new EdgeDetectorRequest();

  19.    request.ConvertOptions = convertOptions;
  20.    request.RegionData = null;
  21.    request.Threshold = 60;
  22.    request.Filter = EdgeDetectorCommandType.SobelBoth;

  23.    CommandResponse response = client.EdgeDetector(request);
  24.    if (response.Destination != null)
  25.    {
  26.       if (response.Destination is RawBinaryData)
  27.          File.WriteAllBytes(Path.Combine(LEAD_VARS.ImagesDir,"EdgeDetector.bmp"), (response.Destination as RawBinaryData).Data);
  28.    }

  29.    client.Close();
  30. }

  31. static class LEAD_VARS
  32. {
  33. public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images";
  34. }
复制代码


https://www.leadtools.com/help/leadtools/v19/dh/to/webframe.html

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
mcwong
注册会员   /  发表于:2015-9-29 18:46:00
板凳
謝謝你的時間及回覆.

我找到了一比EdgeDetection 更好的方法, 就是用LineRemove 作為偵測線條, 代碼如下:


  1. using Leadtools;
  2. using Leadtools.Codecs;
  3. using Leadtools.ImageProcessing.Core;

  4. [TestMethod]
  5. public void ImageRegionPropertyExample()
  6. {
  7.    // Load an image
  8.    RasterCodecs codecs = new RasterCodecs();
  9.    codecs.ThrowExceptionsOnInvalidImages = true;
  10.    RasterImage image = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "Clean.tif"));

  11.    // Prepare the command
  12.    LineRemoveCommand command = new LineRemoveCommand();
  13.    command.LineRemove += new EventHandler<LineRemoveCommandEventArgs>(LineRemoveEvent_S3);
  14.    command.Type  = LineRemoveCommandType.Horizontal;
  15.    command.Flags = LineRemoveCommandFlags.UseVariance | LineRemoveCommandFlags.SingleRegion ;
  16.    command.GapLength = 2;
  17.    command.MaximumLineWidth = 5;
  18.    command.MinimumLineLength = 200;
  19.    command.MaximumWallPercent = 10;
  20.    command.Wall = 7;
  21.    command.Variance = 2;
  22.    command.Run(image);

  23. }

  24. private void LineRemoveEvent_S3(object sender, LineRemoveCommandEventArgs e)
  25. {
  26.    MessageBox.Show("Row Col "   + "( " + e.StartRow.ToString() + ", " + e.StartColumn + " )" +
  27.       "\n Length " + e.Length.ToString());
  28.    e.Status= RemoveStatus.Remove;
  29. }

  30. static class LEAD_VARS
  31. {
  32. public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images";
  33. }
复制代码



MC

评分

参与人数 1金币 +999 收起 理由
frank.zhang + 999 反馈

查看全部评分

回复 使用道具 举报
frank.zhang
社区贡献组   /  发表于:2015-9-30 11:04:00
地板
感谢您在解决问题后,给我们的反馈。
相信会有很多人再您的帮助下,节约了很多时间。

为了表示感谢,给您分发 1000 金币。可以用于兑换论坛奖品。
金币规则:点击进入
礼品列表:点击进入
回复 使用道具 举报
frank.zhang
社区贡献组   /  发表于:2015-10-10 12:22:00
5#
为了给你提供更优质的服务,请对本次服务进行评分。我们会认真对待你提出的宝贵意见,谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部