基于Halcon的C#条码识别案例(简易)

8 篇文章 2 订阅
1 篇文章 1 订阅
该博客介绍了基于Halcon的C#条码识别流程,包括读取图像、创建二维码模型、匹配解码及显示结果。同时展示了如何用C#生成随机二维码图片,并将生成的二维码图片读取到Halcon进行解码,输出解码后的SN结果。内容涵盖了图像处理、二维码编码解码及C#编程技术。
摘要由CSDN通过智能技术生成

一:基于Halcon的C#条码识别案例分析

read_image (Image, 'C:/Users/Administrator/Desktop/22.jpg')
rgb1_to_gray (Image, GrayImage) 
*创建一个二维码数据模型
 create_data_code_2d_model ('QR Code','default_parameters', 'maximum_recognition',DataCodeHandle) 
*匹配二维码模型,获取数据信息
 find_data_code_2d (GrayImage,SymbolXLDs,DataCodeHandle, 'train', 'all',ResultHandles, DecodedDataStrings)
 *显示轮廓
 dev_set_color ('green')
 dev_display (SymbolXLDs)
 *删除二维码模型
 clear_data_code_2d_model(DataCodeHandle) 

 

二:编写随机二维码程序段,通过生成的二维码图片派发给halcon识别。

随机二维码生成并保存二维码图片 。

 private Bitmap GetBarCode()
        {
            QRCodeEncoder encoder = new QRCodeEncoder();
            encoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;//编码方式(注意:BYTE能支持中文,ALPHA_NUMERIC扫描出来的都是数字)
            encoder.QRCodeScale = 7;//大小(值越大生成的二维码图片像素越高)
            encoder.QRCodeVersion = 0;//版本(注意:设置为0主要是防止编码的字符串太长时发生错误)
            encoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;//错误效验、错误更正(有4个等级)                                                        //encoder.QRCodeForegroundColor = Color.Green;
            string qrdata = Guid.NewGuid().ToString("N");
            Bitmap bcodeBitmap = encoder.Encode(qrdata.ToString(), Encoding.UTF8);
            imgName = Guid.NewGuid().ToString("N");
            bcodeBitmap.Save(@"C:\Users\Administrator\Desktop\barcode\" + imgName + ".png", ImageFormat.Png);
            //bcodeBitmap.Dispose();
            return bcodeBitmap;
        }

三:读取图片到hWindowControl界面

  private void loadimg(string imgpath)
        {
            HObject h_img;
            HTuple h_width = null;
            HTuple h_height = null;
            HOperatorSet.ReadImage(out h_img, imgpath);
            HOperatorSet.GetImageSize(h_img, out h_width, out h_height);
            HOperatorSet.SetPart(hWindowControl1.HalconWindow, 0, 0, h_height + 1, h_width + 1);
            HOperatorSet.DispObj(h_img, hWindowControl1.HalconWindow);
            h_img.Dispose();
        }

 四:halcon解码并返回SN结果.

     public void action(string path,out string sn)
        {
            // Local iconic variables 
            HObject ho_Image, ho_GrayImage, ho_SymbolXLDs;
            // Local control variables 

            HTuple hv_DataCodeHandle = null, hv_ResultHandles = null;
            HTuple hv_DecodedDataStrings = null;
            // Initialize local and output iconic variables 
            HOperatorSet.GenEmptyObj(out ho_Image);
            HOperatorSet.GenEmptyObj(out ho_GrayImage);
            HOperatorSet.GenEmptyObj(out ho_SymbolXLDs);
            ho_Image.Dispose();
            HOperatorSet.ReadImage(out ho_Image, path);
            ho_GrayImage.Dispose();
            HOperatorSet.Rgb1ToGray(ho_Image, out ho_GrayImage);
            //创建一个二维码数据模型
            HOperatorSet.CreateDataCode2dModel("QR Code", "default_parameters", "maximum_recognition",
                out hv_DataCodeHandle);
            //匹配二维码模型,获取数据信息
            ho_SymbolXLDs.Dispose();
            HOperatorSet.FindDataCode2d(ho_GrayImage, out ho_SymbolXLDs, hv_DataCodeHandle,
                "train", "all", out hv_ResultHandles, out hv_DecodedDataStrings);
            //显示轮廓
            sn = hv_DecodedDataStrings;
            if (HDevWindowStack.IsOpen())
            {
                HOperatorSet.SetColor(HDevWindowStack.GetActive(), "green");
            }
            if (HDevWindowStack.IsOpen())
            {
                HOperatorSet.DispObj(ho_SymbolXLDs, HDevWindowStack.GetActive());
            }
            //删除二维码模型
            HOperatorSet.ClearDataCode2dModel(hv_DataCodeHandle);
            ho_Image.Dispose();
            ho_GrayImage.Dispose();
            ho_SymbolXLDs.Dispose();

        }

大概实现就这样了。 

### 回答1: 基于HALCON联合C的开发方式,可以实现高效、可靠的机器视觉应用。 HALCON是一种功能强大的机器视觉库,提供了丰富的图像处理和分析算法。而C语言是一种通用的编程语言,具有广泛的应用领域。将HALCON与C语言结合使用,可以充分发挥两者的优势,实现更复杂的图像处理任务。 在开发过程中,可以使用C语言编写程序的框架和逻辑,然后调用HALCON提供的函数完成图像处理的实际操作。HALCON提供了丰富的函数接口,方便开发人员进行图像的获取、预处理、分析和识别等操作。 需要注意的是,使用HALCON联合C进行开发,需要先安装HALCON的开发环境,并将HALCON的库文件和头文件正确配置到C语言开发环境中。然后,可以在C语言的开发环境中调用HALCON提供的函数,实现相关的图像处理功能。 通过HALCON联合C的开发方式,可以灵活地应对不同的图像处理需求。同时,C语言的高效性和HALCON丰富的算法支持,可以在开发过程中提供更好的性能和效果。因此,这种联合开发方式在工业视觉、自动化检测等领域具有广泛的应用前景。 ### 回答2: Halcon是一款机器视觉开发软件,与C语言可以进行联合开发。基于Halcon联合C语言的开发,可以实现更加灵活和高效的机器视觉应用。 首先,在使用Halcon进行图像处理和分析时,可以调用C语言中的一些功能来增强其处理能力。例如,使用C语言的数学库可以进行更复杂的数值计算,如矩阵运算、统计分析等。而Halcon本身对于图像的处理速度较慢,可以通过调用C语言的图像处理库来加速图像处理的速度。此外,C语言还可以用于与外部硬件进行通信,如相机、传感器等的接口控制。 另外,Halcon与C语言的联合开发还可以实现更加高级的功能和应用。通过C语言的编程能力,可以实现与其他软件和系统的对接,如与数据库进行数据交互、与控制系统进行联动控制等。这样可以将机器视觉应用与其他系统进行完美融合,实现更加智能和自动化的控制。 总的来说,基于Halcon联合C语言的开发,可以让我们充分发挥两者的优势,实现更加灵活、高效和智能的机器视觉应用。无论是图像处理的速度和精度,还是与外部系统的联动控制,都能得到更好的实现。这种联合开发的方式,可以为机器视觉应用的开发带来更多的可能性和挑战。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值