[OpenCV][ARM9下移植OpenCV]

安装环境

宿主机:

Red Hat Enterprise Linux Server 6.3

开发板:

mini2440

相关软件:

cmake-3.5.1.tar.gz、OpenCV-2.3.1a.tar.bz2

下载地址:

CMake:

https://cmake.org/files/v3.5/cmake-3.5.1.tar.gz

OpenCV:

http://downloads.sourceforge.net/project/opencvlibrary/opencv-unix/2.3.1/OpenCV-2.3.1a.tar.bz2

安装过程

CMake安装

说明:

CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。用它来产生OpenCV编译时用到的Makefile文件。

步骤:

1.解压

tar xvf cmake-3.5.1.tar.gz

cd cmake-3.5.1

2.配置

./configure --prefix=/usr  //生成Makefile,安装位置/usr

3.编译

make   //通过Makefile编译源代码

4.安装

make install   //文件安装在/usr/路径下

5.测试

cmake   //执行cmake命令显示cmake版本号和帮助信息表示安装成功

OpenCV安装

说明:

OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库。编译和运行调用OpenCV库函数的程序时需要用到OpenCV库和头文件。

1.解压

tar xvf OpenCV-2.3.1a.tar.bz2

cd OpenCV-2.3.1

2.配置

2.1.编写配置文件

vim toolchain.cmake

# this one is important
SET(CMAKE_SYSTEM_NAME Linux)

# specify the cross compiler
SET(CMAKE_C_COMPILER   /usr/local/arm/4.3.2/bin/arm-linux-gcc)
SET(CMAKE_CXX_COMPILER /usr/local/arm/4.3.2/bin/arm-linux-g++)

# where is the target environment
SET(CMAKE_FIND_ROOT_PATH /usr/local/arm/4.3.2)

# search for programs in the build host directories
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
# for libraries and headers in the target directories
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

2.2.生成编译文件

mkdir _install   //创建安装目录

cmake -DCMAKE_TOOLCHAIN_FILE=toolchain.cmake -DCMAKE_INSTALL_PREFIX=${PWD}/_install/   //生成Makefile

2.3.修改编译文件

ccmake .

WITH_FFMPEG                      OFF   //关闭视频解码,如果需要先编译相关库
WITH_GSTREAMER                   OFF   //关闭视频解码,如果需要先编译相关库
WITH_GTK                         OFF   //关闭图形界面,如果需要先编译相关库
WITH_TIFF                        OFF   //关闭图片格式,如果需要先编译相关库

按下c生效配置,按下e退出配置,按下q退出配置。

3.编译

make   //通过Makefile编译源代码

如果遇到错误:

/space/work/thesis/000/OpenCV-2.3.1/modules/flann/include/opencv2/flann/dist.h:63:error: ‘fabsl‘ was not declared in this scope。

修改fabsl为fabs,然后继续make。

如果遇到错误:

Linking CXX executable ../../bin/opencv_test_calib3d

../../lib/libopencv_core.so: undefined reference to `pthread_key_create‘

../../lib/libopencv_core.so: undefined reference to `pthread_getspecific‘

../../lib/libopencv_ts.so: undefined reference to `pthread_key_delete‘

../../lib/libopencv_core.so: undefined reference to `pthread_once‘

../../lib/libopencv_core.so: undefined reference to `clock_gettime‘

../../lib/libopencv_core.so: undefined reference to `pthread_setspecific‘

collect2: ld returned 1 exit status

修改/opt/opencv2.3.1目录下的CMakeCache.txt,CMAKE_EXE_LINKER_FLAGS原来为空,加上-lpthread –lrt,然后继续make。

4.安装

make install   //文件安装在${PWD}/_install/路径下

5.测试

5.1.编写Makefile

vim Makefile

prefix = .../OpenCV-2.3.1/_install
libdir = $(prefix)/lib
includedir_old = $(prefix)/include/opencv
includedir_new = $(prefix)/include

Libs  = -L$(libdir) -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_flann
Cflag = -I$(includedir_old) -I$(includedir_new)

% : %.c
    arm-linux-g++ $(Libs) $(Cflag) $^ -o [email protected]

% : %.cpp
    arm-linux-g++ $(Libs) $(Cflag) $^ -o [email protected]

5.2.编写测试程序

vim test.cpp

#include <stdio.h>
#include <cv.h>
#include <highgui.h>

using namespace cv;

int main(int argc, char **argv){
    //参数检测
    if(argc != 2){
        printf("Usage:\n\%s <image.jpg>", argv[1]);
    }

    //打开图片
    Mat src;

    src = imread(argv[1], 0);   //灰度转换

    //保存图片
    imwrite("dst.jpg", src);

    return 0;
}

5.3.复制程序和链接库到开发板

cp .../OpenCV-2.3.1/_install/lib/* .../rootfs/lib/

cp test .../rootfs/sbin

5.4.运行程序

./test image.jpg   //如果成功保存灰度图片说明移植成功

如果缺少相关库通过下面命令查找并复制到开发板

arm-linux-gcc -print-file-name=libxxx.so

cp .../lib/libxxx.* .../rootfs/lib

参考文档

http://blog.csdn.net/embeddedman/article/details/7416934

http://blog.csdn.net/eagelangel/article/details/7232364

http://www.cnblogs.com/emouse/archive/2013/04/01/2993842.html

http://blog.sina.com.cn/s/blog_5ca0198e0101iphz.html

http://blog.csdn.net/wc7620awjh/article/details/8268447

http://www.tuicool.com/articles/yAFnQ3

http://blog.sina.com.cn/s/blog_627bb2cf0101ge3r.html

http://www.vtk.org/Wiki/CMake_Cross_Compiling#Setting_up_the_system_and_toolchain

相关移植

libtiff交叉编译

./configure --host=arm-linux CC=arm-linux-gcc CXX=arm-linux-g++ --prefix=${PWD}/_install/

make

make install

file libtiff.so.5.2.4   //查看版本是否为ARM

cp _install/lib/* .../rm-none-linux-gnueabi/libc/armv4t/usr/lib -rf   //复制到编译器链接库目录

cp _install/inclue/* .../rm-none-linux-gnueabi/libc/armv4t/usr/inclue -rf   //复制到编译器头文件目录

arm-linux-gcc -print-file-name=libtiff.so   //显示库全路径表示已经生效

cp _install/lib/* .../rootfs/lib -rf   /复制到开发板链接库目录

ffmpeg交叉编译

./configure --enable-cross-compile --arch=arm --target-os=linux --cross-prefix=arm-linux-  --enable-shared --prefix=${PWD}/_install

make

make install

file libavcodec.so.53.8.0   //查看版本是否为ARM

cp _install/lib/* .../rm-none-linux-gnueabi/libc/armv4t/usr/lib -rf   //复制到编译器链接库目录

cp _install/inclue/* .../rm-none-linux-gnueabi/libc/armv4t/usr/inclue -rf   //复制到编译器头文件目录

arm-linux-gcc -print-file-name=libavcodec.so   //显示库全路径表示已经生效

cp _install/lib/* .../rootfs/lib -rf   /复制到开发板链接库目录

原文地址:https://www.cnblogs.com/Jack-Tango/p/8322454.html

时间: 2024-10-10 20:27:35

[OpenCV][ARM9下移植OpenCV]的相关文章

移植opencv到开发板,摄像头在开发板6410上的采集使用(1)

最近在搞人眼检测 人脸识别移植opencv qt 到开发板tiny6410的时候在虚拟机跑得程序可以用,但是一直到开发板一堆错误. 移植qt我简单写一下很简单 然后安装QT4.7 ①     拷贝压缩包到主机/opt目录下 ②     #mkdir –p /opt/mini6410 ③     #cd /opt/mini6410 ④     #tar zxvf /opt/qt-everywhere-opensource-src-4.7.0.tar.gz ⑤     执行以下命令执行Qt4.7.0

zedboard上移植OPENCV库

zedboard上移植OPENCV库 之前做了很多移植OPENCV库的工作,但是需要包含的各种库,需要交叉编译,X264 ,JPGE ,FFMPGE等等 注意:在<嵌入式系统软硬件协同设计实战指南>中13章中,说了需要关闭各种设置开关,根本原因是我们没有相应的库支持,所以我们如果需要在opencv中使用相应的库,那么就必须提前将各种库交叉编译好,放入交叉编译器的目录,我的交叉编译器安装目录/root/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx

pycharm 和 Anaconda 下的 opencv 安装

学习真的切忌三天打鱼两天晒网!! 一开始python下的opencv已经都弄好了,中间电脑坏了一次,好久没有接触这个,就全部都忘完了.深感惋惜. 今天又从新安装了一下opencv.在anaconda下的安装非常的方便,只要把opencv下的一个cv2.pyd文件复制到anaconda下就可以了.具体操作是: 先找到你的opencv路径下的cv2.pyd,------------------D:\Program Files\opencv\build\python\2.7\x64 将cv2.pyd复

[学习OpenCV攻略][016][RedHat下安装OpenCV]

安装环境 操作系统: Red Hat Enterprise Linux Server 6.3 相关软件: OpenCV-2.3.1a.tar.bz2.cmake-3.5.1.tar.gz 下载地址: OpenCV: http://downloads.sourceforge.net/project/opencvlibrary/opencv-unix/2.3.1/OpenCV-2.3.1a.tar.bz2 CMake: https://cmake.org/files/v3.5/cmake-3.5.1

QtCreator下运行opencv出现realloc():pointer invalid

解决办法是将qmake换成4.8的,qmake5.2的支持opencv支持的不是很好 QtCreator下运行opencv出现realloc():pointer invalid,布布扣,bubuko.com

【从零学习openCV】IOS7下的openCV开发起步(Xcode5.1.1&amp;amp;openCV2.49)

前言: 开发IOS7已经有一月的时间了,近期在准备推研的事,有点想往CV方向发展,于是開始自学openCV. 关注CSDN已经非常久了,也从非常多博主那学到了非常多知识,于是我也从这周开启自己的blog之旅,从零開始学openCV,从零開始做笔记写blog,哈哈~ 好了,废话不多说,进入正题.. IOS7下使用openCV Mac OS下要使用openCV当然要编译,可是假设仅仅是在ios下使用openCV的话,仅仅须要将bulid好的opencv2.framework导入到project中就可

window环境下Python+OpenCV配置

最近开始学习OpenCV来进行计算机视觉实验,选择了Python作为实验语言,工欲善其事,必先利其器.先总结下安装配置. 现在opencv目测只支持Python2.7X版本的,还依赖于numpy和matplotlib两个类库.. (I)前期准备 1.下载安装Python2.7:https://www.python.org/downloads/  选择最新版2.7.13 2.下载pip: https://pypi.python.org/pypi/pip,主要是用来安装numpy和matplotli

Ubuntu 下安装opencv 编译后执行找不到库

在ubuntu下编译opencv程序后,执行报下面到错误:error while loading shared libraries: libopencv_core.so.2.4: cannot open shared object file: No such file or directory解决方法:找到libopencv_开头到库的目录,在/usr/local/lib下面,在/etc/ld.so.conf.d/下面新建一个opencv.conf,里面写入/usr/local/lib,最后执行

java 在centos6.5+eclipse环境下调用opencv实现sift算法

java 在centos6.5+eclipse环境下调用opencv实现sift算法,代码如下: import org.opencv.core.Core; import org.opencv.core.Mat; import org.opencv.core.MatOfKeyPoint; import org.opencv.highgui.Highgui; import org.opencv.features2d.*; public class ExtractSIFT{ public static