HyperLPR3车牌识别-Linux/MacOS使用:C/C++库编译

这篇具有很好参考价值的文章主要介绍了HyperLPR3车牌识别-Linux/MacOS使用:C/C++库编译。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简介

原文地址:https://tunmx.github.io/posts/CH-HyperLPR3-Build-Linux/

HyperLPR在2023年初已经更新到了v3的版本,该版本与先前的版本一样都是用于识别中文车牌的开源图像算法项目,最新的版本的源码可从github中提取:https://github.com/szad670401/HyperLPR

支持多种类型车牌

HyperLPR3车牌识别-Linux/MacOS使用:C/C++库编译

Linux C/C++库说明

项目支持编译出C/C++项目使用的动态链接库,暂时仅支持Linux、MacOS等这类*nix系列的系统。库采用CAPI的接口形式进行调用,仅需一个头文件+动态库即可。工程需要使用CMake进行编译。

准备工作

在编译库之前需要提前准备好以编译的工作环境,需要依赖如下:

  • CMake(3.10 以上)

  • OpenCV (4.20以上)

  • 编译对应的平台如android、ios、linux都需要采用各自平台支持的OpenCV-SDK

  • MNN (2.0.0以上)

  • C++编译器

  • GCC或Clang皆可 (macOS无需另外安装,Xcode自带)

  • GCC推荐版本4.9以上

  • 在某些发行版上GCC (GNU C编译器)和G++(GNU C++编译器是分开安装的)。

  • 同样以Ubuntu为例,需要分别安装 gcc 和 g++

  • Clang 推荐版本3.9以上

  • Catch2(仅编译TestCase需要)

拉取项目

从github或gitee中拉取最新版的HyperLPR工程到本地

# 从github拉取
git clone https://github.com/szad670401/HyperLPR.git

网络不太稳的同学可以使用gitee拉取项目

# 从gitee拉取
git clone https://gitee.com/tunmx/HyperLPR.git
安装CMake

CMake安装方式众多,Ubuntu用户可使用apt快捷安装:

sudo apt-get install cmake

MacOS可使用brew进行快捷安装:

sudo brew install cmake

如果快捷安装失败也可到CMake官方下载最新版自行编译安装。

安装依赖库

为了节约编译三方依赖库的时间,这边提供了一份已经编译好的库,提供的库均为功能相对标准的库,如有其他功能的需求,请自行调整参数重新编译。百度网盘 密码:eu31,下载后将其拷贝或链接到HyperLPR根目录下,与CMakeLists.txt同级即可:

HyperLPR/
├── 3rdparty_hyper_inspire_op # 放这里
├── CMakeLists.txt
├── LICENSE
├── Prj-Android
├── Prj-Linux
├── Prj-Python
├── README.md
├── build
├── cmake-build-debug
├── command
├── cpp
├── docs
├── images
└── resource

动态库快捷编译

准备好以上工作后,执行编译脚本即可开始编译:

# 执行编译脚本
sh command/build_release_linux_share.sh

编译后的相关物料放置于根目录下build/linux/install/hyperlpr3中,其中包含:

  • include 头文件

  • lib 动态库路径

  • resource 包含测试图片与模型等静态资源

按需取走需要的文件即可

使用Demo

编译好动态链接库后,我们提供了一个使用Demo,即根目录下的Prj-Linux文件夹,在编译完成上面的动态库后即可进入到该目录下进行测试,该demo仅体现SDK最简单的使用方式,代码如下:


#include <iostream>
#include "hyper_lpr_sdk.h"
#include "opencv2/opencv.hpp"

static const std::vector<std::string> TYPES = {"蓝牌", "黄牌单层", "白牌单层", "绿牌新能源", "黑牌港澳", "香港单层", "香港双层", "澳门单层", "澳门双层", "黄牌双层"};


int main(int argc, char **argv) {
    char *model_path = argv[1];
    char *image_path = argv[2];
    // 读取图像
    cv::Mat image = cv::imread(image_path);
    // 创建ImageData
    HLPR_ImageData data = {0};
    data.data = image.ptr<uint8_t>(0);      // 设置图像数据流
    data.width = image.cols;                   // 设置图像宽
    data.height = image.rows;                  // 设置图像高
    data.format = STREAM_BGR;                  // 设置当前图像编码格式
    data.rotation = CAMERA_ROTATION_0;         // 设置当前图像转角
    // 创建数据Buffer
    P_HLPR_DataBuffer buffer = HLPR_CreateDataBuffer(&data);

    // 配置车牌识别参数
    HLPR_ContextConfiguration configuration = {0};
    configuration.models_path = model_path;         // 模型文件夹路径
    configuration.max_num = 5;                      // 最大识别车牌数量
    configuration.det_level = DETECT_LEVEL_LOW;     // 检测器等级
    configuration.use_half = false;
    configuration.nms_threshold = 0.5f;             // 非极大值抑制置信度阈值
    configuration.rec_confidence_threshold = 0.5f;  // 车牌号文本阈值
    configuration.box_conf_threshold = 0.30f;       // 检测器阈值
    configuration.threads = 1;
    // 实例化车牌识别算法Context
    P_HLPR_Context ctx = HLPR_CreateContext(&configuration);
    // 查询实例化状态
    HREESULT ret = HLPR_ContextQueryStatus(ctx);
    if (ret != HResultCode::Ok) {
        printf("create error.\n");
        return -1;
    }
    HLPR_PlateResultList results = {0};
    // 执行车牌识别算法
    HLPR_ContextUpdateStream(ctx, buffer, &results);

    for (int i = 0; i < results.plate_size; ++i) {
        // 解析识别后的数据
        std::string type;
        if (results.plates[i].type == HLPR_PlateType::PLATE_TYPE_UNKNOWN) {
            type = "未知";
        } else {
            type = TYPES[results.plates[i].type];
        }

        printf("<%d> %s, %s, %f\n", i + 1, type.c_str(),
               results.plates[i].code, results.plates[i].text_confidence);
    }

    // 销毁Buffer
    HLPR_ReleaseDataBuffer(buffer);
    // 销毁Context
    HLPR_ReleaseContext(ctx);

    return 0;
}

执行命令即可编译:

# 进入到子工程demo
cd Prj-Linux
# 执行编译脚本
sh build.sh
# 进入目录
cd build/
# 编译好PlateRecDemo程序后 传入模型文件夹路径和需要预测的图像执行程序
./PlateRecDemo ../hyperlpr3/resource/models/r2_mobile ../hyperlpr3/resource/images/test_img.jpg

单元测试编译

如果需要验证代码、库与模型之间构成是否正确,可使用项目中自带的单元测试进行编译和测试

# 创建编译目录 并进入
mkdir build_test && cd build_test
# 编译单元测试程序
cmake -DBUILD_TEST=ON .. && make -j8

编译完成后需要执行单元测试程序,需要将resource链接到程序同级目录下再执行测试用例

# 使用链接的方式设置resource目录
ln -s ../resource .
# 执行测试
./UnitTest

帮助

以上为HyperLPR3的C/C++快速上手,需要获取其他的帮助,请移步到项目地址:https://github.com/szad670401/HyperLPR文章来源地址https://www.toymoban.com/news/detail-441514.html

到了这里,关于HyperLPR3车牌识别-Linux/MacOS使用:C/C++库编译的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 违章停车车牌识别:使用YOLOv5进行车牌检测与识别

    介绍 准备工作 数据集准备 训练YOLOv5模型 车牌识别 违章停车检测 总结与展望 违章停车问题在城市中是一个很常见的交通问题。为了有效地管理违章停车问题,我们需要对违停车辆进行识别。本篇博客将向您展示如何使用YOLOv5进行车牌检测与识别,从而辅助管理违章停车问题

    2024年02月07日
    浏览(35)
  • 计算机视觉:使用opencv实现车牌识别

    汽车车牌识别(License Plate Recognition)是一个日常生活中的普遍应用,特别是在智能交通系统中,汽车牌照识别发挥了巨大的作用。汽车牌照的自动识别技术是把处理图像的方法与计算机的软件技术相连接在一起,以准确识别出车牌牌照的字符为目的,将识别出的数据传送至交

    2024年02月04日
    浏览(47)
  • 如何使用 Python 检测和识别车牌(附 Python 代码)

    车牌检测与识别技术用途广泛,可以用于道路系统、无票停车场、车辆门禁等。这项技术结合了计算机视觉和人工智能。 本文将使用Python创建一个车牌检测和识别程序。该程序对输入图像进行处理,检测和识别车牌,最后显示车牌字符,作为输出内容。 要轻松地完成本教程

    2024年01月18日
    浏览(44)
  • python中使用opencv LED屏数字识别(可用做车牌识别,一样的原理)

    应项目要求需要基于cpu的LED数字识别,为了满足需求,使用传统方法进行实验。识别传感器中显示的数字。因此使用opencv的函数做一些处理,实现功能需求。 首先读取图像,因为我没想大致得到LED屏幕的区域,因此将RGB转换为HSV空间,并分别设置H、S和V的阈值,让该区域显现

    2024年02月06日
    浏览(44)
  • 车牌识别算法 基于yolov5的车牌检测+crnn中文车牌识别 支持12种中文车牌识别

    1.单行蓝牌 2.单行黄牌 3.新能源车牌 4.白色警用车牌 5 教练车牌 6 武警车牌 7 双层黄牌 8 双层武警 9 使馆车牌 10 港澳牌车 11 双层农用车牌 12 民航车牌 效果如下: 车牌检测+关键点定位 1.第一步是目标检测,目标检测大家都很熟悉,常见的yolo系列,这里的话我用的是我修改后

    2024年02月04日
    浏览(86)
  • 【深度学习实践】基于深度学习的车牌识别(python,车牌检测+车牌识别)

    车牌识别具有广泛的应用前景,基于传统方法的车牌识别效果一般比较差,随着计算机视觉技术的快速发展,深度学习的方法能够更好的完成车牌识别任务。  本文提供了车牌识别方案的部署链接,您可以在网页上体验该模型的效果:车牌识别方案在线体验 本文介绍了使用

    2024年02月03日
    浏览(41)
  • 车辆大全和车牌识别系统毕业设计,车牌识别系统设计与实现,车牌AI识别系统论文毕设作品参考

    【后台管理员功能】 系统设置:设置网站简介、关于我们、联系我们、加入我们、法律声明 广告管理:设置小程序首页轮播图广告和链接 留言列表:所有用户留言信息列表,支持删除 会员列表:查看所有注册会员信息,支持删除 资讯分类:录入、修改、查看、删除资讯分

    2024年02月07日
    浏览(49)
  • 在线合成车牌照片【模拟车牌,用于车牌识别项目测试】

    http://new.hdsxsc.com:10086/server.php?cphm=冀DSX888cpys=0 cphm:车牌号码【仅限合规的车牌号码规则】 cpys:车牌颜色: 0=蓝色,1=黄色,2=白色,3=黑色,4=纯绿,6=黄绿 double:是否双层:0=单层 1=双层 【默认单层,仅白色和黄色支持双层车牌】 3.1:蓝牌 http://new.hdsxsc.com:10086/server.php?cp

    2023年04月17日
    浏览(62)
  • MacOs使用VS Code编译调试C语言程序

    参考博客:Windows/macOS使用VSCode搭建C/C++的开发/Debug环境 在微软官方下载适合macOS版本的VS Code。 C/C++ C/C++ Extension Pack (扩展包里内含有C/C++、C/C++ Themes、CMake Tools和CMake,也一起装了) Chinese(Simplified) 中文汉化包 Code Runner(运行代码) 安装好Code Runner后要记得在它的拓展设置里

    2024年02月09日
    浏览(44)
  • 在MacOS 上 使用brew 部署C++ gcc编译环境

    brew包管理工具能够帮助我们更好的管理电脑中的各种工具 再尝试了很多次下载之后发现,需要使用到国内的包进行下载安装,不要使用官网的链接进行直接下载,很大可能会导致下载失败 按照提示,需要重启Terminal或者输入 输入后提示 原因可能是没有安装xcode–select 按照提

    2024年02月05日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包