在arm 64 环境下使用halcon算法

背景:

halcon,机器视觉领域神一样得存在,在windows上,应用得特别多, 但是arm环境下使用得很少。那如何在arm下使用halcon呢。按照官方说明,arm下只提供了运行时环境,并且需要使用价值一万多人民币的硬件加密狗才可以运行,但众所周知,我朝盗版软件横行,因此写下了这篇不道德但是实用的文章。

步骤:

1,

halcon的运行时环境,包括了所有的so库,但缺少头文件。要想在arm 下编译,头文件,库文件缺一不可,因此需要将 开发环境的头文件拷贝到运行时环境下。这里以版本 20.11.1.2 为例。

具备了头文件和so文件后,再将破解文件进行替换,就可以在arm 下使用halcon算法了。

2,

写了一个读二维码和条码的 demo ,cmake 配置如下

cmake_minimum_required(VERSION 3.0.0)
project(HalconDemo VERSION 0.1.0)

set(TARGET_NAME HalconDemo)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../include)
link_directories(${CMAKE_CURRENT_SOURCE_DIR}/../lib/aarch64-linux)

aux_source_directory(. SRCS )

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}  -static-libstdc++ -fPIC -Wl,--copy-dt-needed-entries -Wno-error=deprecated-declarations -Wno-deprecated-declarations ")

add_executable(${TARGET_NAME}  ${SRCS})

#include <iostream>

#include <halconcpp/HalconCpp.h>

using namespace HalconCpp;
using namespace std;

int main(int argc, char **argv)
{
    // Local iconic variables
    HObject ho_barImage, ho_SymbolRegions, ho_codeImage;
    HObject ho_SymbolXLDs;

    // Local control variables
    HTuple hv_WindowHandle, hv_BarCodeHandle;
    HTuple hv_DecodedDataStrings, hv_DataCodeHandle, hv_ResultHandles;

    std::cout << "进入算法" << endl;

    ReadImage(&ho_barImage, "./image/barCode.jpg");
    std::cout << "完成读图1" << endl;

    CreateBarCodeModel(HTuple(), HTuple(), &hv_BarCodeHandle);
    SetBarCodeParam(hv_BarCodeHandle, "element_size_min", 1);
    SetBarCodeParam(hv_BarCodeHandle, "meas_param_estimation", "true");
    FindBarCode(ho_barImage, &ho_SymbolRegions, hv_BarCodeHandle, "auto", &hv_DecodedDataStrings);
    ClearBarCodeModel(hv_BarCodeHandle);

    for (int i = 0; i < hv_DecodedDataStrings.Length(); i++)
    {
        std::cout << "barcode" << i << ":" << hv_DecodedDataStrings[i].S() << endl;
    }

    ReadImage(&ho_codeImage, "./image/2DCode.bmp");
    std::cout << "完成读图2" << endl;
    CreateDataCode2dModel("QR Code", HTuple(), HTuple(), &hv_DataCodeHandle);
    SetDataCode2dParam(hv_DataCodeHandle, "string_encoding", "utf8");
    FindDataCode2d(ho_codeImage, &ho_SymbolXLDs, hv_DataCodeHandle, HTuple(), HTuple(),
                   &hv_ResultHandles, &hv_DecodedDataStrings);
    ClearDataCode2dModel(hv_DataCodeHandle);

    for (int i = 0; i < hv_DecodedDataStrings.Length(); i++)
    {
        std::cout << "2dcode" << i << ":" << hv_DecodedDataStrings[i].S() << endl;
    }

    return 0;
}

3.

执行的时候 只需要将 libhalcon.so.20.11.1 这个文件 拷贝到可执行目录下即可。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 15
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

土拨鼠不是老鼠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值