在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 这个文件 拷贝到可执行目录下即可。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>