ubuntu 22 cross compile OpenCV 4.8 for RK3588

1 down load opencv 4.8

https://opencv.org/releases/

2 mkdir build && cd build

bash 复制代码
mkdir build
cd build/

3 cmake ...

bash 复制代码
sudo cmake .. -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=../install -D ENABLE_FAST_MATH=1 -D WITH_OPENCL=ON -D WITH_IPP=OFF -D ITH_GTK=ON -D WITH_GTK3=ON  -D BUILD_SHARED_LIBS=OFF -D CMAKE_C_COMPILER=/home/jeffrey/360/host/bin/aarch64-buildroot-linux-gnu-gcc -D CMAKE_CXX_COMPILER=/home/jeffrey/360/host/bin/aarch64-buildroot-linux-gnu-g++

4 make -j12

bash 复制代码
make -j12

---------------------------------------remap ocl -------------------------------------------------------------

1 main

cpp 复制代码
#include <iostream>
#include <opencv2/core.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv2/highgui.hpp>

using namespace cv;
void perspective_to_maps(cv::Matx33d &perspective_mat, cv::Size img_size, cv::Mat &map1, cv::Mat &map2)
{
    cv::Mat inv_perspective(perspective_mat.inv());
    inv_perspective.convertTo(inv_perspective, CV_32FC1);

    cv::Mat xy(img_size, CV_32FC2);
    float *pxy = (float *)xy.data;
    for (int y = 0; y < img_size.height; y++)
        for (int x = 0; x < img_size.width; x++)
        {
            *pxy++ = x;
            *pxy++ = y;
        }
    // perspective transformation of the points
    cv::Mat xy_transformed;
    cv::perspectiveTransform(xy, xy_transformed, inv_perspective);
    assert(xy_transformed.channels() == 2);
    cv::Mat maps[2];
    cv::split(xy_transformed, maps);
    cv::convertMaps(maps[0], maps[1], map1, map2, CV_32F);
}
cv::Mat mapx,mapy,dst1,dst2;
cv::Matx33d homog(-1.104333310637919, -1.02803450593307, 4.132532927151,
-0.08141394964341982, -1.35103411932037, 4.2699610224884,
-0.0003145704784753452, -0.002810559414638452, 1);
int main(int argc, char **argv) 
{
     
    cv::Size size_map(6, 6);
    perspective_to_maps(homog,size_map,mapx,mapy);    
  
    cv::Mat src = Mat::zeros(size_map,CV_8UC1);  // cv::Mat src= cv::imread("../image/back.png",cv::IMREAD_GRAYSCALE);
    for(int i = 0; i < src.cols;i++) 
            for (int j=0; j < src.cols; j++) 
                src.at<u_char>(i, j) = (i + j)*20;

    cv::resize(src, src, size_map, 0, 0, cv::INTER_NEAREST);
    cv::UMat usrc;
    cv::UMat udst1;
    src.copyTo(usrc);
    // 
    cv::UMat usrc1;
    cv::UMat usrc2;
    cv::UMat usrc3;
    cv::UMat usrc4;
    
    src.copyTo(usrc1);
    src.copyTo(usrc2);
    src.copyTo(usrc3);
    src.copyTo(usrc4);
    int num=100;
    char *p_a[num];
    for(int i=0;i<num;i++)
    {
        char *p = (char*) malloc((1000*1000*sizeof(char)));
        p_a[i]=p;
        if (p != NULL)
        {
            printf("malloc successfully 5*1000*1000*1000\n");
        }
        else
        {
            printf("malloc failed\n");
        }
    }

    cv::remap(usrc, udst1, mapx, mapy, cv::INTER_LINEAR, cv::BORDER_CONSTANT, cv::Scalar(0));
    cv::remap(usrc1, udst1, mapx, mapy, cv::INTER_LINEAR, cv::BORDER_CONSTANT, cv::Scalar(0));
    cv::remap(usrc2, udst1, mapx, mapy, cv::INTER_LINEAR, cv::BORDER_CONSTANT, cv::Scalar(0));
    cv::remap(usrc3, udst1, mapx, mapy, cv::INTER_LINEAR, cv::BORDER_CONSTANT, cv::Scalar(0));
    cv::remap(usrc4, udst1, mapx, mapy, cv::INTER_LINEAR, cv::BORDER_CONSTANT, cv::Scalar(0));
    while(1)
    {;}

    return 0;
}

2 log

Status -11: CL_BUILD_PROGRAM_FAILURE

-D INTER_LINEAR -D BORDER_CONSTANT -D T=uchar -D rowsPerWI=1 -D WT=float -D convertToT=convert_uchar_sat_rte -D convertToWT=convert_float -D convertToWT2=convert_float2 -D WT2=float2 -D T=uchar -D T1=uchar -D cn=1 -D ST=uchar -D depth=0

:175:9: error: expected member name or ';' after declaration specifiers

int32_t depth; /**< The image depth. */

^

:14:15: note: expanded from here

#define depth 0

^

:175:8: error: expected ';' at end of declaration list

int32_t depth; /**< The image depth. */

^

error: Compiler frontend failed (error code 62)

3 how to resolve

change depth i n line 1362 to m_depth

相关推荐
Bill661 小时前
OpenCV GUI常用函数详解
人工智能·opencv·计算机视觉
“JB...One”1 小时前
openssl-AES-128-CTR加解密结构体
linux·数据结构·算法·ssl
小O_好好学2 小时前
Linux帮助命令
linux·运维·服务器
OH五星上将2 小时前
OpenHarmony(鸿蒙南向开发)——标准系统方案之瑞芯微RK3568移植案例(下)
linux·驱动开发·嵌入式硬件·harmonyos·openharmony·鸿蒙开发·系统移植
周湘zx2 小时前
k8s中的微服务
linux·运维·服务器·微服务·云原生·kubernetes
Jack黄从零学c++2 小时前
自制网络连接工具(支持tcpudp,客户端服务端)
linux·c语言·开发语言·网络协议·tcp/ip·udp·信息与通信
VB.Net3 小时前
EmguCV学习笔记 VB.Net 12.1 二维码解析
opencv·计算机视觉·c#·图像·vb.net·二维码·emgucv
‍理我3 小时前
Linux系统编程(基础指令)上
linux·服务器
-杀意感知-3 小时前
Linux 开发工具(vim、gcc/g++、make/Makefile)+【小程序:进度条】-- 详解
linux
jndingxin3 小时前
OpenCV特征检测(3)计算图像中每个像素处的特征值和特征向量函数cornerEigenValsAndVecs()的使用
人工智能·opencv·计算机视觉