arm poky linux,opencv移植在4412和imx6(yocto 3.14.28 arm-poky-linux-gnueabi )上
宿主机:ubuntu14.04
u opencv版本:opencv2.4.13
u 交叉编译器:arm-2009q3.tar.bz2
opencv下载网址:http://opencv.org/
交叉编译器下载网址:http://www.veryarm.com/arm-none-linux-gnueabi-gcc
选择对应的版本号即可,这里用该目录下的已经下载好的文件,拷贝arm-2009q3.tar.bz2和opencv-2.4.13.zip到ubuntu,这里是/home/now。
1. 安装库文件
uptech@uptech:/home/now#sudo apt-get install build-essential
uptech@uptech:/home/now#sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
uptech@uptech:/home/now#sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
uptech@uptech:/home/now# sudo add-apt-repository ppa:kirillshkrogalev/ffmpeg-next
uptech@uptech:/home/now# sudo apt-get update
uptech@uptech:/home/now# sudo apt-get install ffmpeg
只是安装opencv的话用命令不难,为了为后面用cmake-gui进行交叉编译铺路因此这里用cmake-gui来编译先检查cmake是否安装
uptech@uptech:/home/now# cmake -version
一般是已经安装好了very good,检查cmake-gui
uptech@uptech:/home/now# cmake-gui -version
没安装,提示准备好了,安装即可
The program 'cmake-gui' is currently not installed. You can install it by typing:
uptech@uptech:/home/now# sudo apt-get install cmake-qt-gui
2. 解压opencv
新建一个文件夹叫opencv,里面专门放opencv编译生成的各种东西,将下载后的文件解压到这里。
uptech@uptech:/home/now#mkdir opencv
uptech@uptech:/home/now$ cd opencv/
uptech@uptech:/home/now/opencv$ unzip /home/now/opencv-2.4.13.zip
3. 安装交叉编译器
进入/usr/local目录创建arm并解压,因权限问题,使用超级用户。
uptech@uptech:/home/now/opencv$ cd /usr/local/
uptech@uptech:/usr/local$ sudo su
[sudo] password for uptech:
root@uptech:/usr/local#
root@uptech:/usr/local$ mkdir arm
root@uptech:/usr/local/arm#tar -xjvf /home/now/arm-2009q3.tar.bz2 -C./
4. 安装交叉编译器
进入实验目录,创建移植目录arm,配置opencv。
root@uptech:/usr/local/arm# cd /home/now/opencv
root@uptech:/home/now/opencv# ls
opencv-2.4.13
root@uptech:/home/now/opencv# mkdir arm
root@uptech:/home/now/opencv# cmake-gui
选择源代码路径和移植路径如图:
点击Configure,选择最后一项。
Operating System:arm-linux(填写名称任意)。
C:交叉编译器arm-none-linux-gnueabi-gcc路径。
C++:交叉编译器arm-none-linux-gnueabi-g++路径。
点击Finish。
修改安装路径,这里是/usr/local/opencv-arm。
增加:JPEG和PNG选项
去掉:1394
点击Configure,然后在点击Generate,然后关闭。进入arm目录make编译。
root@uptech:/home/now/opencv#cd arm/
root@uptech:/home/now/opencv/arm# ls
3rdparty CPackSourceConfig.cmake modules
apps CTestTestfile.cmake opencv2
bin cvconfig.h OpenCVConfig.cmake
CMakeCache.txt data OpenCVConfig-version.cmake
CMakeFiles doc OpenCVModules.cmake
cmake_install.cmake include unix-install
cmake_uninstall.cmake junk version_string.tmp
CopyOfCMakeCache.txt lib
CPackConfig.cmake Makefile
root@uptech:/home/now/opencv/arm# make
出现问题:
../../lib/libopencv_core.so: undefinedreference to `pthread_spin_init'
../../lib/libopencv_core.so: undefinedreference to `pthread_spin_unlock'
../../lib/libopencv_core.so: undefinedreference to `pthread_spin_lock'
../../lib/libopencv_core.so: undefinedreference to `pthread_spin_destroy'
../../lib/libopencv_core.so: undefinedreference to `pthread_once'
../../lib/libopencv_core.so: undefined referenceto `clock_gettime'
../../lib/libopencv_core.so: undefinedreference to `pthread_spin_trylock'
修改目录下的CMakeCache.txt,CMAKE_EXE_LINKER_FLAGS原来为空,加上-lpthread –lrt –ldl,继续make编译。
然后安装,会在/usr/local/opencv-arm目录。
root@uptech:/home/now/opencv/arm# make install
……
root@uptech:/home/now/opencv/arm# ls /usr/local/opencv-arm
bin include lib share
5. 编写测试程序
创建测试目录,编写test.c,测试程序是将彩色图片1.bmp变成灰白1_1.bmp。
root@uptech:/home/now/opencv/arm# cd ..
root@uptech:/home/now/opencv/# mkdir opencv_test/
root@uptech:/home/now/opencv/# cd opencv_test/
root@uptech:/home/now/opencv/opencv_test# vim test.c
#include "cv.h"
#include "cxcore.h"
#include "highgui.h"
int main(int argc,char **argv)
{
CvCapture* capture = NULL;
IplImage* pImg = NULL;
IplImage* pImg1 = NULL;
fprintf(stderr, "123");
pImg = cvLoadImage("1.bmp",1);
fprintf(stderr, "456");
pImg1 =cvCreateImage(cvSize(pImg->width,pImg->height),IPL_DEPTH_8U,1);
fprintf(stderr, "456");
cvCvtColor(pImg,pImg1,CV_RGB2GRAY);
fprintf(stderr, "789");
cvSaveImage("1_1.bmp",pImg1);
fprintf(stderr, "109");
cvReleaseImage( &pImg );
cvReleaseImage( &pImg1 );
return 0;
}
拷贝三个头文件cv.h,cxcore.h,highgui.h到当前目录。因为使用的是opencv的头文件,这些头文件在/usr/local/opencv-arm/include/下
root@uptech:/home/now/opencv/opencv_test# cp/usr/local/opencv-arm/include/opencv/cv.h ./
root@uptech:/home/now/opencv/opencv_test# cp/usr/local/opencv-arm/include/opencv/cxcore.h ./
root@uptech:/home/now/opencv/opencv_test# cp/usr/local/opencv-arm/include/opencv/highgui.h ./
用交叉编译器编译,-I和-L为头文件路径和库文件路径,-l为opencv库参数。生成测试文件test。
root@uptech:/home/now/opencv/opencv_test# /usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-g++test.c -o test -I/usr/local/opencv-arm/include/ -L/usr/local/opencv-arm/lib/-lopencv_core -lopencv_highgui -lopencv_imgproc
test.c:24: note: the mangling of 'va_list'has changed in GCC 4.4
root@uptech:/home/now/opencv/opencv_test# ls
cv.h cxcore.h highgui.h test test.c
将测试程序和opencv-arm拷贝到共享目录imx6下,方便arm开发板去访问。将一张1.bmp的图片放到imx6目录下。
root@uptech:/home/now/opencv/opencv_test# cp test /imx6
root@uptech:/home/now/opencv/opencv_test# cp /usr/local/opencv-arm /imx6/ -rf
root@uptech:/home/now/opencv/opencv_test# cp /home/now/1.bmp /imx6
6. arm上测试
打开开发板,配置IP地址。
[root@yaffs]# ifconfig eth0 192.168.88.184
挂载到将宿主机共享目录imx6挂载到开发板。
[root@yaffs]# mountnfs 192.168.88.184:/imx6 /mnt/nfs/
[root@yaffs]# cd /mnt/nfs/
设置当前环境变量,执行应用程序,会生成1_1.bmp。
[root@ nfs]# export LD_LIBRARY_PATH=$PWD/opencv-arm/lib
[root@ nfs]# ./test
123456456789109[root@nfs]#ls
1.bmp 1_1.bmp test
[root@UP-TECH nfs]#
因为开发板不支持gtk图形显示,所以不能在开发板上显示,只能将图片拷贝出来在PC上去查看。
测试效果图,左边是彩色图像,右边是经过opencv处理过的灰白图像:
imx6航移植
arm poky linux,opencv移植在4412和imx6(yocto 3.14.28 arm-poky-linux-gnueabi )上相关推荐
- IMX6基于yocto3.14.28移植声卡wm8960
项目需求,在基于yocto Linux3.14.28的IMX6平台下移植wm8960声卡.硬件部分如下: 声卡驱动在内核代码的sound/soc/codec,和sound/soc/fsl目录下.原代码 ...
- opencv 移植到迅为IMX6开发板
OpenCV 是目前开源项目中最著名的基于机器视觉方向的图像处理的开发包,目前已经有被移植到嵌入式 Linux 环境上.本文介绍了 OpenCV 交叉编译的基本步骤. 一.编译环境及库文件 linux ...
- linux opencv移植教程,OpenCV在Ubuntu和Linux系统下的移植
1安装cmake-qt-gui:sodo apt-get install cmake-qt-gui 2. 配置cmake: 进入存放opencv2.4.10的文件夹,输入cmake-gui.进入如下界 ...
- linux程序移植到vxworks,VxWorks入门(一):VxWorks Vs Linux
1, VxWorks的特点: 幻灯片 4 .O {font-size:149%;} ■ All functions exist in the same "space". ► Nam ...
- 全志F1C100s主线linux入坑记录 (1)linux系统移植
linux系统移植 (基于SD卡启动) 百度网站 文章目录 linux系统移植 (基于SD卡启动) 一.安装gcc交叉编译器 二.Uboot移植 1.下载Uboot 源码 2.配置Uboot 3.编译 ...
- rtl8188eus Linux驱动移植
rtl8188eus Linux驱动移植 rlt8188eus作为无线USB网卡,可以给我们的Linux设备提供无线上网能力,也能配置为AP,给其它无线设备提供上网能力.在使用较低版本的内核时,内核中 ...
- linux 挂iscisc存储,基于arm的嵌入式linux操作系统的移植研究-通信与信息系统专业论文.docx...
基于arm的嵌入式linux操作系统的移植研究-通信与信息系统专业论文 Classified Index: TP316.8 U.D.C: 621.38 Dissertation for the Mas ...
- LINUX QT移植到ARM (zynq平台 qt5.4.1)
LINUX QT移植到ARM (zynq平台 qt5.4.1) 1.安装tslib 2.安装QT5.4.1 2.1下载QT5.4.1 2.2解压 2.3修改配置文件替换自己的编译器 2.4配置 2.4 ...
- 外网访问arm嵌入式linux系统_嵌入式Linux系统移植的四大步骤
最近在学习系统移植的相关知识,在学习和调试过程中,发现了很多问题,也解决了很多问题,但总是对于我们的开发结果有一种莫名其妙的感觉,纠其原因,主要对于我们的开发环境没有一个深刻的认识,有时候几个简单的命 ...
- 嵌入式linux rtsp移植,嵌入式网络收音机的ARM实现 - ARM - 电子发烧友网
3 系统的的软件设计 3.1 嵌入式Linux的移植 嵌入式Linux内核的版本很多,一般情况下版本越高,系统越稳定,驱动更完善,本系统选择了2.6.18的Linux内核.其实对于2.6以后版本的Li ...
最新文章
- PowerDesigner中如何给字符串字段设置默认值 .
- KlayGE 4.0中Deferred Rendering的改进(五)完结篇:Post process
- 设计模式(一) 策略模式
- rar for android最新版,RAR for Android手机版下载-RAR for Android 安卓压缩软件v5.30 安卓版下载-腾牛安卓网...
- Ubuntu16.04(64位)下安装和破解source insight4
- 【数学基础】概率论——p(x|\theta)和p(x;\theta)的区别
- Android开发之在Fragment和Activity页面拍照需要注意的地方
- 三年租男友回家竟花了10万......
- 7-19 谁先倒 (15 分)
- 矛与盾——扫描器盲打对主动安全防护的启示
- 【优化选址】基于matlab遗传算法求解多城市多应急物流中心选址优化问题【含Matlab源码 H001期】
- Web前端开发视频教程
- 【Java分享客栈】我为什么极力推荐XXL-JOB作为中小厂的分布式任务调度平台
- 如何完全卸载删除Parallels Desktop Mac教程
- Chap1_基础理论+Chap2_数据准备和数据模型
- 哈佛结构和冯诺依曼结构?STM32属于哈佛结构还是冯诺依曼结构?
- 我的世界java版怎么加整合包_我的世界怎么制作整合包
- 刻意练习,从新手到大师
- 数字图像处理必备软件
- 关于安装VISO过程中出现的1406错误解决方案