hi3559编译opencv4.2.0 并使用

简介: hi3559编译opencv本人博客搬运

hi3559编译opencv4.2.0 并使用

(之后上传编译好的so文件)

下载源码,编译安装

去官方网站下载4.2.0源码
复制,改名
修改最顶层的CMakeLists.txt,在第658行加入一条语句


ocv_include_directories(./3rdparty/zlib)

能解决以下问题:
fix error: pngstruct.h:30:18: fatal error: zlib.h: No such file or directory #include "zlib.h":
修改3rdparty/libpng/CMakeLists.txt,在文件前加入以下4行语句,

IF(HISI3559A)
    SET(ARM 1)
    SET(ENABLE_NEON 1)
ENDIF()

在/home/haitu/opencv路径(opencv源码路径下)新建hisi_build文件夹,并新建build.sh,chmod 777 ./build.sh 赋予执行权限,文件内容如下

cmake \
    -DCMAKE_BUILD_TYPE=RELEASE \
    -DCMAKE_C_COMPILER=/opt/hisi-linux/x86-arm/aarch64-himix100-linux/bin/aarch64-himix100-linux-gcc \
    -DCMAKE_CXX_COMPILER=/opt/hisi-linux/x86-arm/aarch64-himix100-linux/bin/aarch64-himix100-linux-g++ \
    -DBUILD_SHARED_LIBS=ON \
    -DCMAKE_CXX_FLAGS=-fPIC \
    -DCMAKE_C_FLAGS=-fPIC \
    -DCMAKE_EXE_LINKER_FLAGS=-lpthread -lrt -ldl \
    -DENABLE_PIC=ON \
    -DWITH_1394=OFF \
    -DWITH_ARAVIS=OFF \
    -DWITH_ARITH_DEC=ON \
    -DWITH_ARITH_ENC=ON \
    -DWITH_CLP=OFF \
    -DWITH_CUBLAS=OFF \
    -DWITH_CUDA=OFF \
    -DWITH_CUFFT=OFF \
    -DWITH_FFMPEG=ON \
    -DWITH_GSTREAMER=ON \
    -DWITH_GSTREAMER_0_10=OFF \
    -DWITH_HALIDE=OFF \
    -DWITH_HPX=OFF \
    -DWITH_IMGCODEC_HDR=ON \
    -DWITH_IMGCODEC_PXM=ON \
    -DWITH_IMGCODEC_SUNRASTER=ON \
    -DWITH_INF_ENGINE=OFF \
    -DWITH_IPP=OFF \
    -DWITH_ITT=OFF \
    -DWITH_JASPER=ON \
    -DWITH_JPEG=ON \
    -DHISI3559A=1 \
    -DWITH_PNG=ON \
    -DWITH_LAPACK=ON \
    -DWITH_LIBREALSENSE=OFF \
    -DWITH_NVCUVID=OFF \
    -DWITH_OPENCL=OFF \
    -DWITH_OPENCLAMDBLAS=OFF \
    -DWITH_OPENCLAMDFFT=OFF \
    -DWITH_OPENCL_SVM=OFF \
    -DWITH_OPENEXR=OFF \
    -DWITH_OPENGL=OFF \
    -DWITH_OPENMP=OFF \
    -DWITH_OPENNNI=OFF \
    -DWITH_OPENNNI2=OFF \
    -DWITH_OPENVX=OFF \
    -DWITH_PROTOBUF=OFF \
    -DWITH_PTHREADS_PF=ON \
    -DWITH_PVAPI=OFF \
    -DWITH_QT=OFF \
    -DWITH_QUIRC=OFF \
    -DWITH_TBB=OFF \
    -DWITH_TIFF=ON \
    -DWITH_VULKAN=OFF \
    -DWITH_WEBP=ON \
    -DWITH_XIMEA=OFF \
    -DWITH_GTK=OFF \
    -DINSTALL_C_EXAMPLES=ON \
    -DINSTALL_PYTHON_EXAMPLES=OFF \
    -DBUILD_EXAMPLES=ON \
    -DCMAKE_INSTALL_PREFIX=./install \
    ..

./build.sh执行,生成Makefile,然后make ,make install

部署

报错:version `CXXABI_1.3.11‘ not found
在ubuntu下找到最高版本的可能能用的libstdc(注意区分,别找你系统的,大概率不能用
sudo find / -name "libstdc++.so.6*"
看他是否有这个版本的包
sudo strings /opt/hisi-linux/x86-arm/aarch64-himix100-linux/aarch64-linux-gnu/lib64/libstdc++.so.6.0.23 |grep CXXABI
板端删除原来连接
rm libstdc++.so.6
建立新的链接
ln libstdc++.so.6 libstdc++.so.6.0.23

测试

测试1

参考https://blog.csdn.net/fengbingchun/article/details/96430706 文章,可以把example_tutorial_porting_anisotropic_image_segmentation_gapi拷贝到板子上,动态链接库文件路径(/home/haitu/opencv/hisi_build/install/lib)拷贝到板端(/lib64)的位置,然后在example_tutorial_porting_anisotropic_image_segmentation_gapi的同级放一个input.jpg,这样就可以输出一个out.jpg

测试2

cv.cpp文件如下:


#include <stdio.h>
#include "opencv2/opencv.hpp"
 
int main()
{
 
    cv::Mat image = cv::imread("./input.jpg");
 
    //cv::imshow("xxx", image);
 
    //cv::waitKey(40);
 
    printf("image.col=%d image.row=%d \n", image.cols, image.rows);
 
    cv::imwrite("aa.jpg", image);
 
    return 0;

}

makefile 内容如下

CC = aarch64-himix100-linux-g++
DIR = /home/haitu/opencv/hisi_build/install
 
#TARGETS := opencv_test
 
LD=-lopencv_highgui -lopencv_features2d -lopencv_flann -lopencv_calib3d -lopencv_objdetect -lopencv_imgcodecs -lopencv_imgproc -lopencv_videoio -lopencv_core -lpthread -lrt -ldl #-lzlib
 
INCLUDE = -I$(DIR)/include/opencv4 -I/home/haitu/opencv/include/ -I/home/haitu/opencv/3rdparty/zlib/
 
LIB_PATH = -L$(DIR)/lib 
 
all:cv.cpp
    $(CC) $(INCLUDE) $(LIB_PATH) $(LD) cv.cpp -o cv
clean:
    rm -f *.o $(TARGETS)

编译成功,运行成功后就正常了
同样需要一个input.jpg在同目录下

目录
相关文章
|
1月前
|
缓存 并行计算 Ubuntu
Jetson 学习笔记(十一):jetson agx xavier 源码编译ffmpeg(3.4.1)和opencv(3.4.0)
本文是关于在Jetson AGX Xavier上编译FFmpeg(3.4.1)和OpenCV(3.4.0)的详细教程,包括编译需求、步骤、测试和可能遇到的问题及其解决方案。还提供了Jetson AGX Xavier编译CUDA版本的OpenCV 4.5.0的相关信息。
73 4
Jetson 学习笔记(十一):jetson agx xavier 源码编译ffmpeg(3.4.1)和opencv(3.4.0)
|
1月前
|
Ubuntu 应用服务中间件 nginx
Ubuntu安装笔记(三):ffmpeg(3.2.16)源码编译opencv(3.4.0)
本文是关于Ubuntu系统中使用ffmpeg 3.2.16源码编译OpenCV 3.4.0的安装笔记,包括安装ffmpeg、编译OpenCV、卸载OpenCV以及常见报错处理。
156 2
Ubuntu安装笔记(三):ffmpeg(3.2.16)源码编译opencv(3.4.0)
|
30天前
|
Ubuntu 编译器 计算机视觉
Ubuntu系统编译OpenCV4.8源码
【10月更文挑战第17天】只要三步即可搞定,第一步是下载指定版本的源码包;第二步是安装OpenCV4.8编译需要的编译器与第三方库支持;第三步就是编译OpenCV源码包生成安装文件并安装。
|
2月前
|
并行计算 JavaScript 算法
opencv4.5.1+contrib+cuda编译成功,实时人头匹配,手动狗头
这篇文章介绍了如何在Windows 10上使用Visual Studio 2017成功编译OpenCV 4.5.1及其contrib模块和CUDA支持,并解决了编译过程中的问题,如项目文件无效、cmake工具问题,并添加了Qt和JavaScript支持,同时提供了参考链接。
opencv4.5.1+contrib+cuda编译成功,实时人头匹配,手动狗头
|
2月前
|
JavaScript 计算机视觉 C++
win10+vs2017+opencv4.5.1+contrib+cuda编译成功,实时人头匹配,手动狗头
这篇文章介绍了如何在Windows 10系统上使用Visual Studio 2017和OpenCV 4.5.1(含contrib模块和CUDA支持)成功编译OpenCV,并解决了编译过程中遇到的问题,如项目文件无效、cmake工具问题、添加Qt和JavaScript支持,并提供了参考链接和cmake配置文件。
win10+vs2017+opencv4.5.1+contrib+cuda编译成功,实时人头匹配,手动狗头
|
2月前
|
计算机视觉
vs2019_qt6.2.4_dcmtk3.6.7_vtk9.2.2_itk5.3_opencv4.6.0编译记录
这篇文章记录了使用VS2019编译Qt6.2.4、DCMTK3.6.7、VTK9.2.2、ITK5.3和OpenCV4.6.0的过程,包括下载和编译步骤,并提供了遇到编译错误时的解决方案和参考链接。
vs2019_qt6.2.4_dcmtk3.6.7_vtk9.2.2_itk5.3_opencv4.6.0编译记录
|
2月前
|
机器学习/深度学习 Java 计算机视觉
opencv4.5.5+qt5.15.2+vtk9.1+mingw81_64编译记录
本文记录了使用mingw81_64编译OpenCV 4.5.5、Qt 5.15.2、VTK 9.1的详细过程,包括编译结果截图、编译步骤、遇到的问题及其解决方案,以及相关参考链接。文中还提到了如何编译boost源码为静态库,并提供了测试代码示例。
opencv4.5.5+qt5.15.2+vtk9.1+mingw81_64编译记录
|
3月前
|
并行计算 算法 Java
cmake+vs2019编译OpenCV
cmake+vs2019编译OpenCV
40 0
|
4月前
|
Ubuntu 编译器 计算机视觉
Ubuntu系统下编译OpenCV4.8源码
在Ubuntu上源码安装OpenCV 4.8分为三步:1) 下载源码包,使用`wget`命令;2) 安装依赖,如`g++`, `cmake`, `make`等;3) 创建编译目录,运行`cmake`配置,接着`make`编译,最后`sudo make install`安装。安装完成后,通过编写和运行一个简单的OpenCV C++程序来验证环境配置正确性。
136 10
|
4月前
|
计算机视觉 iOS开发 C++
【OpenCV】在MacOS上源码编译OpenCV
【7月更文挑战第9天】在MacOS上源码编译OpenCV需分步进行: 1. 准备工作: 安装Xcode, Command Line Tools及依赖如CMake, Homebrew. 2. 获取OpenCV源码: 从官网下载并解压所需版本. 3. 编译OpenCV. 4. 安装OpenCV: 编译后使用`sudo make install`进行安装. 5. 验证安装: 编写简单C++程序测试OpenCV功能, 如读取并显示图片.
168 1
下一篇
无影云桌面