C#屏幕截图并基于Halcon识别字母

本文介绍了如何在C#中通过屏幕截图API获取矩形区域的图片,将其转换为HObject类型,并利用Halcon库进行OCR识别,获取文本内容的过程。
摘要由CSDN通过智能技术生成

首先是屏幕截图, 参数rectangle 需要传进去需要截图的矩形坐标

 	    /// <summary>
        /// 屏幕截图
        /// </summary>
        /// <param name="rectangle">矩形坐标</param>
        public Bitmap Screenshoot(Rectangle rectangle)
        {
            try
            {
                int sourceX = rectangle.Location.X;
                int sourceY = rectangle.Location.Y;
                int destinationX = rectangle.Width;
                int destinationY = rectangle.Height;
                Bitmap bitmap = new Bitmap(rectangle.Width, rectangle.Height);
                using (Graphics g = Graphics.FromImage(bitmap))
                {
                    g.CopyFromScreen(sourceX, sourceY, 0, 0, bitmap.Size);
                    g.Dispose();
                }
                return bitmap;
            }
            catch (Exception)
            {
                 throw;
            }
           
        }

   

需要把截图下来的图片转为HObject类型

 public void Bitmap2HObject(Bitmap bmp, out HObject image)
        {
            try
            {
                Rectangle rect = new Rectangle(0, 0, bmp.Width, bmp.Height);
                BitmapData srcBmpData = bmp.LockBits(rect, ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
                HOperatorSet.GenImageInterleaved(out image, srcBmpData.Scan0, "bgr", bmp.Width, bmp.Height, 0, "byte", 0, 0, 0, 0, -1, 0);
                bmp.UnlockBits(srcBmpData);
            }
            catch (Exception ex) { image = null; }
        }

 

最后是基于Halcon识别图片,需要安装Halcon导入halcondotnet.dll
在这里插入图片描述
Universal_0-9A-Z_Rej.occ 是Halcon自带的识别库,在Halcon的安装目录下可以找到,然后拷贝到自己的项目目录下使用
在这里插入图片描述

 		/// <summary>
        /// 识别图片基于Halcon库
        /// </summary>
        public string HalconScanImage()
        {
            try
            {
         
                string ocrpath = AppDomain.CurrentDomain.BaseDirectory + "\\ocr\\Universal_0-9A-Z_Rej.occ";
                HTuple hv_TextResultID = null; HTuple resultValue = null; HTuple hv_TextModel = null;
                HObject ho_Image;
                HOperatorSet.GenEmptyObj(out ho_Image);
                //HOperatorSet.ReadImage(out ho_Image, filename);
				Bitmap2HObject(Screenshoot(new Rectangle(1, 1, 20, 50)),out ho_Image);
                HOperatorSet.CreateTextModelReader("auto", ocrpath , out hv_TextModel);
                HOperatorSet.SetTextModelParam(hv_TextModel, "max_char_height", 18);
                HOperatorSet.SetTextModelParam(hv_TextModel, "max_char_width", 10);
                HOperatorSet.FindText(ho_Image, hv_TextModel, out hv_TextResultID);
                HOperatorSet.GetTextResult(hv_TextResultID, "class", out resultValue); //获取测试结果
                //todo halcon 解析图片结果
                string resultStr = string.Empty;
                if (resultValue.Length == 0) resultStr = "";
                else
                {
                    foreach (var item in resultValue.SArr)
                    {
                        resultStr += item;
                    }
                }
                return resultStr;
            }
            catch (Exception)
            {
                throw;
            }
        }
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C#中使用Halcon实现二维码识别可以通过以下步骤进行: 1. 首先,确保你已经安装了Halcon开发环境,并且在C#项目中引入了Halcon的相关库。 2. 创建一个Halcon的图像对象,将待识别的图像加载到该对象中。 3. 使用Halcon提供的二维码识别函数对图像进行处理并得到识别结果。例如,可以使用`find_bar_code`函数来查找二维码,并使用`decode_bar_code_2d`函数对二维码进行解码。 4. 获取识别结果并进行后续处理。你可以将识别到的二维码信息显示在界面上或者进行其他操作,如数据存储、网络传输等。 以下是一个简单的示例代码,演示了如何在C#中使用Halcon实现二维码识别: ```csharp using HalconDotNet; class Program { static void Main(string[] args) { // 加载Halcon引擎 HOperatorSet.SetSystem("border_shape_models", "true"); // 创建Halcon图像对象 HObject image = new HObject(); // 从文件中加载待识别的图像 HOperatorSet.ReadImage(out image, "path_to_your_image"); // 定义变量用于存储识别结果 HTuple decodedDataStrings = new HTuple(); // 进行二维码识别 HOperatorSet.FindBarCode(image, out image, new HTuple("QR_CODE"), out decodedDataStrings); // 打印识别结果 Console.WriteLine("QR Code: " + decodedDataStrings.ToString()); // 释放资源 image.Dispose(); // 关闭Halcon引擎 HOperatorSet.CloseAll(); } } ``` 请注意,以上代码只是一个简单的示例,实际应用中可能需要根据具体情况进行适当的参数调整和异常处理。另外,你需要替换代码中的图像路径为你自己的图像路径。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值