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

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

基于Halcon的C#条码识别案例(简易)_第1张图片

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的C#条码识别案例(简易)_第2张图片

 

二:编写随机二维码程序段,通过生成的二维码图片派发给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();

        }

基于Halcon的C#条码识别案例(简易)_第3张图片

大概实现就这样了。 

基于Halcon的C#条码识别案例(简易)_第4张图片

你可能感兴趣的:(Halcon,C#9.0,Winform,c#,视觉,视觉检测)