halcon学习笔记——实例篇(3)条形码识别

转载:http://www.cnblogs.com/hanzhaoxin/archive/2013/02/16/2913284.html


条形码或条码(barcode)是由一组按一定编码规则排列的条,空符号,用以表示一定的字符,数字及符号组成的信息。条码系统是由条码符号设计,制作及扫描阅读组成的自动识别系 统。 条码卡分为一维码和二维码两种。一维码比较常用,如日常商品外包装上的条码就是一维码。它的信息存储量小,仅能存储一个代号,使用时通过这个代号调 取计算机网络中的数据。二维码是近几年发展起来的,它能在有限的空间内存储更多的信息,包括文字、图象、指纹、签名等,并可脱离计算机使用。

条码种类很多,常见的大概有二十多种码制,其中包括: 
Code39 码(标准39码)、Codabar码(库德巴码)、Code25码(标准25码)、ITF25码(交叉25码)、Matrix25码(矩阵25码)、 UPC-A码、UPC-E码、EAN-13码(EAN-13国际商品条码)、EAN-8码(EAN-8国际商品条码)、中国邮政码(矩阵25码的一种变 体)、Code-B码、MSI码、Code11码、Code93码、ISBN码、ISSN码、Code128码(Code128码,包括EAN128 码)、Code39EMS(EMS专用的39码)等一维条码和PDF417等二维条码


实例3_1:ITF25条形码识别

ITF25条形码图片

ITF25_1ITF25_2ITF25_3ITF25_4ITF25_5

halcon代码:

* 读取ITF25码
 
create_bar_code_model ([], [], BarCodeHandle)
dev_close_window ()
dev_open_window (0, 0, 120, 300, 'black', WindowHandle)
 
read_image (Image,'D:/MyFile/halcon/条形码识别/ITF25_1.jpg')
get_image_size (Image, Width, Height)
dev_set_window_extents (0, 0, Width-1, Height-1)
 
set_bar_code_param (BarCodeHandle,'check_char','present')
find_bar_code (Image, SymbolRegions, BarCodeHandle, '2/5 Interleaved', DecodedDataStrings)
disp_message (WindowHandle, DecodedDataStrings, 'window', 18, 12, 'black', 'false')
 
clear_bar_code_model (BarCodeHandle)

实例3_2:Code25条形码识别

Code25条形码图片:

Code25_1Code25_2

halcon代码:

* 读取Code25码
create_bar_code_model ([], [], BarCodeHandle)
dev_close_window ()
dev_open_window (0, 0, 120, 300, 'black', WindowHandle)
 
dev_set_draw ('margin')
dev_set_line_width (3)
 
read_image (Image, 'D:/MyFile/halcon/条形码识别/Code25_1.jpg')
get_image_size (Image, Width, Height)
dev_set_window_extents (0, 0, Width-1, Height-1)
dev_display (Image)
 
set_bar_code_param (BarCodeHandle, 'check_char','present')
find_bar_code (Image, SymbolRegions, BarCodeHandle, '2/5 Industrial', DecodedDataStrings)
disp_message (WindowHandle, DecodedDataStrings, 'window', 18, 12, 'black', 'false')
 
clear_bar_code_model (BarCodeHandle)

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Halcon是一款强大的机器视觉软件,在其深度学习库中也集成了目标检测算法YOLOv3,以下是一个简单的Halcon深度学习YOLOv3实例: 1. 首先需要准备训练好的YOLOv3模型文件和对应的类别标签文件。 2. 在Halcon中创建一个新的程序文件,引入Halcon深度学习库和其他需要的库文件。 ```haskell #include "HalconCpp.h" #include "HDevEngineCpp.h" #include <iostream> using namespace HalconCpp; using namespace Halcon; // 初始化Deep Learning库 try { HOperatorSet::SetSystem('use_deeplearning_lib', 'true'); HOperatorSet::OpenEngine("tensorflow", "HDL-32GPU-1-1-256", "default", &hDevEngine); } catch (HException &ex) { std::cout << "Error: " << ex.ErrorMessage() << std::endl; } ``` 3. 加载YOLOv3模型和标签文件。 ```haskell HTuple ModelFile = "yolov3.h5"; HTuple LabelFile = "coco_classes.txt"; HOperatorSet::ReadDLModel(ModelFile, &DLModelHandle); HOperatorSet::ReadTuple(LabelFile, &ClassNames); ``` 4. 加载待检测的图像,并进行预处理。 ```haskell HTuple ImageFile = "test.jpg"; HObject Image; ReadImage(&Image, ImageFile); // 缩放图像至模型输入大小 HTuple InputWidth = 416; HTuple InputHeight = 416; HObject ResizedImage; ResizeImage(Image, &ResizedImage, InputWidth, InputHeight, "constant"); // 转换图像为Tensor HObject Tensor; ConvertImageToTensor(ResizedImage, &Tensor, "nhwc", 255.0, 0.0, "preserve_aspect_ratio"); ``` 5. 运行YOLOv3模型进行目标检测,并解析检测结果。 ```haskell // 运行模型 HObject OutputTensors; RunDLModel(Tensor, DLModelHandle, "yolov3", "default", &OutputTensors); // 解析检测结果 HTuple ConfidenceThreshold = 0.5; HTuple IoUThreshold = 0.5; HTuple DetectionMethod = "standard"; HTuple MaxDetectionCount = 100; HTuple ObjectThreshold; ObjectThreshold.Append(ConfidenceThreshold); ObjectThreshold.Append(IoUThreshold); HTuple DetectionResult; DetectObjectsYOLOV3(OutputTensors, InputWidth, InputHeight, ObjectThreshold, DetectionMethod, MaxDetectionCount, &DetectionResult); // 打印检测结果 HTuple ObjectCount = TupleLength(DetectionResult); for (int i = 0; i < ObjectCount; i++) { HTuple ClassID, Score, BBox; TupleSelect(DetectionResult, i, &ClassID, &Score, &BBox); std::cout << "Class: " << ClassNames[ClassID] << ", Score: " << Score << ", BBox: " << BBox << std::endl; } ``` 以上代码仅为示例,具体细节可能需要根据实际情况进行调整。 ### 回答2: Halcon深度学习YOLO实例是指在Halcon平台上使用YOLO(You Only Look Once)算法进行目标检测的示例。YOLO算法是一种实时目标检测算法,其特点是将目标检测问题转化为单次网络前向传播的问题,具有快速和准确的特点。 在使用Halcon进行深度学习YOLO实例时,首先需要准备目标检测的训练数据集,包括目标类别和对应的标注框信息。然后,根据训练数据集,使用YOLO算法进行网络的训练和优化,得到训练好的模型。 接下来,将训练好的模型应用于目标检测的实例中。首先,需要准备待检测的图像或视频数据。然后,使用Halcon提供的函数加载训练好的模型,并设置检测参数,例如阈值和非极大值抑制等。接着,调用Halcon的目标检测函数,传入待检测的图像数据,即可进行目标检测。最后,根据检测结果,可以对目标进行识别、分类或其他后续处理。 Halcon深度学习YOLO实例的优点在于其集成了强大的图像处理和计算机视觉功能,能够进行实时的目标检测,适用于各种应用场景,例如工业自动化、智能监控等。此外,Halcon还提供了丰富的图像处理和机器视觉算法库,可与YOLO算法相结合,进行更复杂的图像处理和分析任务。 ### 回答3: Halcon深度学习YOLO实例是基于Halcon软件平台进行目标检测和识别的一个实例Halcon是一款强大的机器视觉软件,利用其提供的深度学习算法和YOLO(You Only Look Once)目标检测框架,可以实现对图像或视频中目标物体的自动搜寻和识别。 YOLO是一种实时目标检测算法,其主要思想是将目标检测任务转化为一个回归问题,通过将图像分成较小的网格单元来预测每个单元中是否存在目标以及目标的位置和类别。与传统的基于区域的方法相比,YOLO具有较快的检测速度和较高的准确率。 Halcon深度学习YOLO实例的使用流程大致如下:首先,需要使用Halcon进行模型训练。可以通过提供的图像数据集进行训练,调整模型的网络结构和参数,以提高目标检测的精度。其次,训练完模型后,可以将模型导入到Halcon中使用。在使用过程中,通过Halcon提供的图像处理函数,可以对图像进行预处理、增强等操作,然后将处理后的图像输入到模型中进行目标检测。最后,根据模型的输出结果,可以对目标的位置进行标记、计算其类别概率等。 Halcon深度学习YOLO实例的应用范围广泛,可以用于工业自动化领域中的物体检测与定位、自动驾驶中的障碍物识别、智能安防系统中的行人检测等。使用Halcon进行目标检测和识别,可以提高图像处理的自动化程度和准确性,减少人力成本和错误率,从而帮助用户更高效地完成相关任务。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值