在ARM上安装OpenCV 2.4.9

时间:2014-11-05 17:26:02

标签: c++ linux opencv cross-compiling beagleboneblack

在ARM上安装OpenCV的最佳方法是什么?

我有一个带有Linux Debian的BeagleBone Black,我试图用this sh脚本安装OpenCV,但它非常繁重(超过一天运行)。

我使用this手册在我的Ubuntu x86上交叉编译OpenCV,它运行正常,但现在我不知道我需要将哪些文件复制到我的ARM以运行可执行文件C ++ OpenCv文件,任何人都可以帮助我吗?

我是否需要在ARM上安装OpenCV依赖项(如build-essential,cmake,python ...),如果使用gnueabi在我的Ubuntu x86上编译全部?我想知道在BeagleBone Black上运行可执行C ++ OpenCV文件的更轻松方式。

非常感谢你。

1 个答案:

答案 0 :(得分:2)

如果您只想运行OpenCV应用程序,那么您不需要开发工具(build-essential,cmake,python,g ++,...)。

简短回答:您需要将所有OpenCV共享库(.so文件)复制到设备,以及OpenCV所依赖的所有共享库。

长答案:您可能不需要所有OpenCV共享库来运行您的应用程序。编译完自己的OpenCV程序后,可以使用ldd找出所需的OpenCV共享库,然后再对其中的每一个使用ldd来确定其依赖关系。

This script可能会为您提供有关如何自动完成此过程的一些建议:

#!/bin/bash 
# Author : Hemanth.HM
# Email : hemanth[dot]hm[at]gmail[dot]com
# License : GNU GPLv3
#

function useage()
{
    cat << EOU
Useage: bash $0 <path to the binary> <path to copy the dependencies>
EOU
exit 1
}

#Validate the inputs
[[ $# < 2 ]] && useage

#Check if the paths are vaild
[[ ! -e $1 ]] && echo "Not a vaild input $1" && exit 1 
[[ -d $2 ]] || echo "No such directory $2 creating..."&& mkdir -p "$2"

#Get the library dependencies
echo "Collecting the shared library dependencies for $1..."
deps=$(ldd $1 | awk 'BEGIN{ORS=" "}$1\
~/^\//{print $1}$3~/^\//{print $3}'\
 | sed 's/,$/\n/')
echo "Copying the dependencies to $2"

#Copy the deps
for dep in $deps
do
    echo "Copying $dep to $2"
    cp "$dep" "$2"
done

echo "Done!"