交叉编译OpenCV2.3.1 2022-01-14 20:51 336阅读 0赞 [2019独角兽企业重金招聘Python工程师标准>>> ][2019_Python_] ![hot3.png][] 编译这个库真他麻烦,明明工作重点不是编译OpenCV库,但是时间就偏偏耗在这里,从昨天晚上到现在终于编译成功,说说编译的过程。 我使用的环境linux mint 不记得几了。 编译器arm-linux-gnueabihf-gcc/g++ 4.6 (支持硬件浮点), 目标板是 cubieboard开发板 1GHz的CPU(支持硬件浮点),1GRAM,目前算是很强悍一款开发板了,而且价格公道358元,可以在上面运行opencv,杠杆的。买它回来就是在为了在上面做视觉处理的。 我的编译过程是参考csk前辈的编译过程[http://www.csksoft.net/blog/post/mk802\_dev\_opencv.htm][http_www.csksoft.net_blog_post_mk802_dev_opencv.htm]l,但是他的过程有些小问题,要真正试过才知道![13.gif][]。 这里我放上我编译的opencv库,以及下面要用到的png zlib jpeg依赖库 [ http://vdisk.weibo.com/s/vMeNN/1364722558][http_vdisk.weibo.com_s_vMeNN_1364722558] Hi,推荐文件给你 "zlib\_jpeg\_png.tar.gz"[ http://vdisk.weibo.com/s/vMeQd/1364722532][http_vdisk.weibo.com_s_vMeNN_1364722558] 1.下载硬件浮点编译器, sudo apt-get install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf 2.编译依赖库 2.1 先设定几个环境变量方便后面的编译 export COMPILE\_PREFIX=arm-linux-gnueabihf- export INSTALL\_PREFIX=\`pwd\`/crosscompile\_root export DL\_FOLDER=\`pwd\`/dl export BUILD\_FOLDER=\`pwd\`/buildpool export CC=$\{COMPILE\_PREFIX\}gcc 同时建立上面的几个目录用于存放编译过程的文件,把下载到的zlib/jpeg/png库放到dl目录中。 mkdir crosscompile\_root dl buildpool 2.2 编译zlib,可以把下面的命令制作成一个脚本文件 pushd $BUILD\_FOLDER tar xf $DL\_FOLDER/zlib-1.2.7.tar.gz pushd zlib-1.2.7 ./configure --prefix=$INSTALL\_PREFIX make make install popd 2.3 编译jpeg tar xf $DL\_FOLDER/jpegsrc.v8d.tar.gz pushd jpeg-8d ./configure --host=arm-linux-gnueabihf --prefix=$INSTALL\_PREFIX mkdir -p $INSTALL\_PREFIX/bin mkdir -p $INSTALL\_PREFIX/man/man1 make make install popd 2.4 编译png tar xf $DL\_FOLDER/libpng-1.5.4.tar.gz pushd libpng-1.5.4 ./configure --host=arm-linux-gnueabihf --prefix=$INSTALL\_PREFIX CPPFLAGS=-I$INSTALL\_PREFIX/include LDFLAGS=-L$INSTALL\_PREFIX/lib make make install popd 2.5 配置编译opencv 完成上面的几步应该已经在crosscompile\_root/lib目录下有相应的库了 cd ~/OpenCV2.3.1/ mkdir build 这build目录里建立toolchain.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++ ) set( CMAKE\_LIBRARY\_PATH ~/crosscompile\_root/lib $\{CMAKE\_LIBRARY\_PATH\}) set( CMAKE\_INCLUDE\_PATH ~/crosscompile\_root/include $\{CMAKE\_INCLUDE\_PATH\}) 然后执行命令,csk前辈在这里有个小错误,我已经改了 cmake -DCMAKE\_INSTALL\_PREFIX=$INSTALL\_PREFIX -DZLIB\_INCLUDE\_DIR=$INSTALL\_PREFIX/lib -DPNG\_INCLUDE\_DIR=$INSTALL\_PREFIX/lib -DJPEG\_INCLUDE\_DIR=$INSTALL\_PREFIX/lib -DOPENCV\_EXTRA\_C\_FLAGS="-mfpu=neon -I$INSTALL\_PREFIX/include -L$INSTALL\_PREFIX/lib -Wl, -rpath,$INSTALL\_PREFIX/lib" -DCMAKE\_TOOLCHAIN\_FILE=toolchain.cmake .. 以下是我的cmake结果,可以看到已经禁掉好多东西,因为是嵌入式开发可以吧一些不需要用到的模块去掉, // Extracting svn version, please wait... \-- SVNVERSION: svn:已导出 \-- Detected version of GNU GCC: 46 (406) \-- Could NOT find TIFF (missing: TIFF\_LIBRARY) \-- Could NOT find Jasper (missing: JASPER\_LIBRARY JASPER\_INCLUDE\_DIR) \-- checking for module 'libv4l1' \-- package 'libv4l1' not found \-- Use NumPy headers from: /usr/lib/python2.7/dist-packages/numpy/core/include Traceback (most recent call last): File "<string>", line 1, in <module> ImportError: No module named sphinx \-- Parsing 'cvconfig.h.cmake' \-- \-- General configuration for opencv 2.3.1 ===================================== \-- \-- Built as dynamic libs?: YES \-- Compiler: /usr/bin/arm-linux-gnueabihf-g++ \-- C++ flags (Release): -Wall -pthread -ffunction-sections -mfpu=neon -I/home/msg/crosscompile\_root/include -L/home/msg/crosscompile\_root/lib -Wl, /home/msg/crosscompile\_root/lib -O3 -DNDEBUG -fomit-frame-pointer -DNDEBUG \-- C++ flags (Debug): -Wall -pthread -ffunction-sections -mfpu=neon -I/home/msg/crosscompile\_root/include -L/home/msg/crosscompile\_root/lib -Wl, /home/msg/crosscompile\_root/lib -g -O0 -DDEBUG -D\_DEBUG -ggdb3 \-- Linker flags (Release): \-- Linker flags (Debug): \-- \-- GUI: \-- GTK+ 2.x: NO \-- GThread: NO \-- \-- Media I/O: \-- ZLib: YES \-- JPEG: TRUE \-- PNG: TRUE \-- TIFF: build \-- JPEG 2000: build \-- OpenEXR: NO \-- OpenNI: NO \-- OpenNI PrimeSensor Modules: NO \-- XIMEA: NO \-- \-- Video I/O: \-- DC1394 1.x: NO \-- DC1394 2.x: NO \-- FFMPEG: NO \-- codec: NO \-- format: NO \-- util: NO \-- swscale: NO \-- gentoo-style: YES \-- GStreamer: NO \-- UniCap: NO \-- PvAPI: NO \-- V4L/V4L2: /1 \-- Xine: NO \-- \-- Other third-party libraries: \-- Use IPP: NO \-- Use TBB: NO \-- Use ThreadingFramework: NO \-- Use Cuda: NO \-- Use Eigen: YES \-- \-- Interfaces: \-- Python: NO \-- Python interpreter: /usr/bin/python -B (ver 2.7) \-- Python numpy: YES \-- Java: NO \-- \-- Documentation: \-- Sphinx: NO \-- PdfLaTeX compiler: NO \-- Build Documentation: NO \-- \-- Tests and samples: \-- Tests: YES \-- Examples: NO \-- \-- Install path: /home/msg/crosscompile\_root \-- \-- cvconfig.h is in: /home/msg/OpenCV-2.3.1/build \-- ----------------------------------------------------------------- \-- \-- Configuring done \-- Generating done \-- Build files have been written to: /home/msg/OpenCV-2.3.1/build /// 然后使用ccmake 或者cmake-gui微调, ccmake . ![175248_sSD6_998193.png][] 加入了-mfpu=neon 据说是可以在cubieboard的CPU上进行优化,在ccmake中去掉python,gtk,cuba,1394lib等,因为在arm-linux-gcc编译器里面没有这些相应的库,我就是裁在这里. 3 .直接安装opencv 其实cubieboard上的linaro Ubuntu可以直接从apt-get 安装arm版的opencv, sudo apt-get install libopencv-\* 3.1 测试opencv #include <opencv2/opencv.hpp> #includee <stdio.h> int main( int argc, char * argv[] ) { // grab one frame from the camera specified via arg[1] int camera_id = 0; if (argc > 1) camera_id = atoi(argv[1]); cv::VideoCapture cap(camera_id); if(!cap.isOpened()) // check if we succeeded { printf("failed to open the camera with id %d.\n", camera_id); return -1; } // capture one frame cv::Mat frame; cap >> frame; // get a new frame from camera // save to file imwrite("camera_captured.png", frame); return 0; } 编译以上程序 arm-linux-gnueabihf-g++ main.cpp -o main -L/home/msg/crosscompile\_root/lib -I/home/msg/crosscompile\_root/include -lpthread -lopencv\_core -lopencv\_imgproc -lopencv\_highgui -lopencv\_ml -lopencv\_video -lopencv\_features2d -lopencv\_calib3d -lopencv\_objdetect -lopencv\_contrib -lopencv\_legacy -lopencv\_flann -rpath-link 3.2 把opencv库放到开发板上 复制到SD卡,由于我的是校园网用锐捷的设备,因此搞不到无线网络,也不能用cubieboard上网,很悲剧 sudo cp -r ~/crosscompile/lib/\* /media/yoursdcard/usr/local/lib sudo cp -r ~/main /media/yoursdcard/home/linaro 3.3 执行 ./main 0 //0为摄像头编号 得到 png图像 camera_captured.png 转载于:https://my.oschina.net/elinuxer/blog/118877 [2019_Python_]: https://my.oschina.net/u/2663968/blog/3061697 [hot3.png]: /images/20220114/a5a6999eebc849e092c2794c417b74e9.png [http_www.csksoft.net_blog_post_mk802_dev_opencv.htm]: http://www.csksoft.net/blog/post/mk802_dev_opencv.htm [13.gif]: /images/20220114/bbdfbf25c0154820865e46270503a89a.png [http_vdisk.weibo.com_s_vMeNN_1364722558]: http://vdisk.weibo.com/s/vMeNN/1364722558 [175248_sSD6_998193.png]: /images/20220114/ea28e024ac504402bd442982bc298533.png
相关 交叉编译Nginx 一、首先需要一下材料,并解压。 [源码包:https://download.csdn.net/download/weixin\_43793181/20324052][htt 悠悠/ 2023年01月19日 03:30/ 0 赞/ 144 阅读
相关 嵌入式ARM-Linux之OpenCV交叉编译 编译环境:ubuntu18.04+OpenCV3.4.0+Cmake3.10.2 首先先到opencv官网下载[opencv][] 下载完成后,将压缩包解压到指定路径,例如 水深无声/ 2022年12月20日 06:00/ 0 赞/ 56 阅读
相关 交叉编译 一、什么是交叉编译 什么是交叉编译呢,简单地说,就是在一个平台上生成另一个平台上的可执行代码。这里需要注意的是所谓 平台,实际上包含两个概念:体系结构(Arch 小咪咪/ 2022年08月10日 09:22/ 0 赞/ 200 阅读
相关 boost交叉编译 运行bootstrap.sh ./bootstrap.sh 生成b2、bjam和project-config.jam文件 修改project-config.ja 比眉伴天荒/ 2022年06月12日 23:39/ 0 赞/ 332 阅读
相关 交叉编译opencv-2.4.9问题记录 目录 目录 前言 环境 交叉编译 总结 补充 前言 从来不懂图像算法,但是为了功能,只能硬着头皮研究opencv,工作了才知道 Myth丶恋晨/ 2022年06月05日 02:58/ 0 赞/ 102 阅读
相关 交叉编译openssl 1、解压下载好的openssl-1.0.1c.tar.gz tar xvf openssl-1.0.1c.tar.gz 2、编写build配置安装目录,编译工具 电玩女神/ 2022年05月24日 00:42/ 0 赞/ 177 阅读
相关 golang 交叉编译 1.golang交叉编译需要 golang.org/ └── x ├── net ├── sys └── tools golang.org/x/sy 深碍√TFBOYSˉ_/ 2022年04月10日 13:24/ 0 赞/ 207 阅读
相关 交叉编译valgrind valgrind编译注意事项: 1. --prefix的路径必须和手机上实际运行的目录是一致的,不然运行valgrind会报错: failed to start tool 客官°小女子只卖身不卖艺/ 2022年04月05日 07:53/ 0 赞/ 255 阅读
相关 交叉编译OpenCV2.3.1 [2019独角兽企业重金招聘Python工程师标准>>> ][2019_Python_] ![hot3.png][] 编译这个库真他麻烦,明明工作重点不是编译OpenCV库, 不念不忘少年蓝@/ 2022年01月14日 20:51/ 0 赞/ 337 阅读
相关 Linux aarch64交叉编译opencv3.3 1,下载opencv: linux 下面下载:wget -O opencv-3.3.0.zip https://github.com/Itseez/opencv/archiv ╰+攻爆jí腚メ/ 2021年11月14日 11:02/ 0 赞/ 460 阅读
还没有评论,来说两句吧...