交叉编译opencv

1、安装Xilinx-2017.4到目录/sdb/build/下

2、修改cmake的环境变量,编译最新的opencv
/sdb/build/SDK/2017.4/tps/lnx64/cmake-3.3.2/bin (cmake 太老,修改使用系统的cmake),修改环境cmake的路径:
vi /sdb/build/SDK/2017.4/.settings64-SDK_Core_Tools.sh
{
删除PATH中的cmake路径,这样系统就会默认使用系统的cmake
}

3、验证xilinux-2017.4是否安装好,能够正常执行arm-linux-gnueabihf-gcc命令,并弹出相应信息。
source /sdb/build/Vivado/2017.4/settings64.sh
arm-linux-gnueabihf-gcc -v

4、准备交叉编译opencv,创建cmake文件opencv_zynq.cmake
cd /sdb/build/opencv/opencv/
vi opencv_zynq.cmake
{
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR arm)
set(CMAKE_C_COMPILER arm-linux-gnueabihf-gcc)
set(CMAKE_CXX_COMPILER arm-linux-gnueabihf-g++)
}
mkdir build_zynq
cd build_zynq
cp …/opencv_zynq.cmake ./

5、为交叉编译生成opencv的静态库文件,执行cmake配置生成makefile
cmake -D CMAKE_TOOLCHAIN_FILE=opencv_zynq.cmake
-D CMAKE_INSTALL_PREFIX=./install
-D CMAKE_BUILD_TYPE=Release
-D BUILD_ZLIB=on
-D WITH_ZLIB=on
-D BUILD_TIFF=on
-D WITH_TIFF=on
-D BUILD_JASPER=on
-D WITH_JASPER=on
-D BUILD_JPEG=on
-D WITH_JPEG=on
-D BUILD_PNG=on
-D WITH_PNG=on
-D WITH_FFMPEG=on
-D ACTUAL_3DPARTY_DIR=…/3rdparty
-D OPENCV_EXTRA_MODULES_PATH=…/…/opencv_contrib/modules
-D BUILD_SHARED_LIBS=OFF
-D WITH_GTK=on
-D WITH_GTK_2_X=on
-D WITH_V4L=on
-D WITH_OPENGL=on
-D WITH_OPENVX=on
-D WITH_1394=on
-D WITH_PROTOBUF=on
-D WITH_LAPACK=on
-D BUILD_opencv_world=on
…/

多次执行cmake,下载依赖的库文件等
6、编译(编译前,执行source /sdb/build/Vivado/2017.4/settings64.sh)
time make all
7、安装编译好的静态库到目录install下,install下的所有文件,就是我们需要的文件
make install

使用:

1、在编译环境上配置好nfs服务,方便挂载到板子上:
{
sudo apt-get install nfs-kernel-server
sudo vi /etc/exports
{
/sdb/nfs_root/ *(rw,sync,no_root_squash,no_subtree_check)
}
sudo service nfs-kernel-server restart
sudo showmount -e
}

2、拷贝测试程序opencv_test到目录/sdb/nfs_root/下,编译在zynq板子上执行的程序–opencv_test
{
source /sdb/build/Vivado/2017.4/settings64.sh
cd /sdb/nfs_root/opencv_test/
make -f Makefile_V400_ZYNQ all
}

3、在zynq板子串口终端挂载nfs,执行程序opencv_test,dnn
{
假设编译环境的ip:192.168.98.82.
mount -t nfs -o nolock 192.168.98.82:/sdb/nfs_root /mnt/
cd /mnt/opencv_test
./opencv_test
{
tsvm2 可以执行成功(支持向量机可执行)
tdnn1 lenet_train_test.prototxt lenet_iter_10000.caffemodel space_shuttle.jpg
{
报错:terminate called after throwing an instance of ‘cv::Exception’
what(): OpenCV(4.0.0-dev) /sdb/build/opencv/opencv/modules/dnn/src/caffe/caffe_importer.cpp:418: error: (-5:Bad argument) Duplicate blobs produced by multiple sources in function ‘addOutput’
}
tdnn1 bvlc_googlenet.prototxt bvlc_googlenet.caffemodel space_shuttle.jpg
{
报错:
KL>tdnn1 bvlc_googlenet.prototxt bvlc_googlenet.caffemodel space_shuttle.jpg
run cmd:tdnn1
terminate called after throwing an instance of ‘cv::Exception’
what(): OpenCV(4.0.0-dev) /sdb/build/opencv/opencv/modules/dnn/src/layers/fully_connected_layer.cpp:154: error: (-215:Assertion failed) srcMat.dims == 2 && srcMat.cols == weights.cols && dstMat.rows == srcMat.rows && dstMat.cols == weights.rows && srcMat.type() == weights.type() && weights.type() == dstMat.type() && srcMat.type() == CV_32F && (biasMat.empty() || (biasMat.type() == srcMat.type() && biasMat.isContinuous() && (int)biasMat.total() == dstMat.cols)) in function ‘run’

	}
	
}
time ./dnn --model=bvlc_googlenet.caffemodel --config=bvlc_googlenet.prototxt --width=224 --height=224 --rgb=true --classes=classification_classes_ILSVRC2012.txt --input=space_shuttle.jpg --mean="104 117 123"
执行成功,可以识别图像

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值