移植opencv到ARM开发板

0x00 环境

  • ubuntu9.10
  • arm-linux-gcc 4.3.2

0x01 准备工作

  1. 安装交叉编译链

    我使用的是arm-linux-gcc 4.3.2,解压到目录/usr/local/arm/4.3.2,然后在环境变量PATH中增加/usr/local/arm/4.3.2/bin

  2. 安装CMake

    Opencv 2.0之后的版本,必须使用CMake创建Makefile。我使用的CMake版本是2.8.2,解压到目录/usr/local/cmake-2.8.2-Linux-i386,然后在环境变量PATH中增加/usr/local/cmake-2.8.2-Linux-i386/bin

0x02 编译openCV

编译

  1. 解压Opencv 2.4.9
  2. 创建build目录,作为CMake编译arm版本的工作目录
  3. 运行cmake-gui
    (经过准备工作将CMake解压到/usr/local/cmake-2.8.2-Linux-i386,其中cmake-gui就在该目录下)
    可参考http://blog.csdn.net/xy010902100449/article/details/45092757
    安装过程出现很多错误

开始测试

测试程序如下:

#include "cv.h"
#include"highgui.h"
const char*picture = "lena.jpg";
int main(int argc,char** argv)
{
    IplImage *pImage=cvLoadImage(picture,1);
    cvNamedWindow("Test",CV_WINDOW_AUTOSIZE);
    cvShowImage("Test",pImage);
    cvWaitKey(0);
    cvReleaseImage(&pImage);
    cvDestroyWindow("Test");
}

然后Makefile如下:

all:test
CFLAGS=-Wall
OPENCV_INCLUDE=-I /usr/local/arm/include/opencv
CC = arm-linux-g++
OPENCV_LINK =-L/usr/local/arm/lib -lcv -lcxcore -lhighgui -lpthread -lrt
%:%.cpp
    $(CC) $(OPENCV_INCLUDE) $< -o $@ $(OPENCV_LINK) `pkg-config opencv --libs`-ldl
.PHONY:clean
clean:
    rm -f test

此处的pkg-…..–libs两边的 ` 是左上角的,这里写错,编译测试程序的时容易出现:

collect2: error: ld returned 1 exit status 

可参考:
http://blog.163.com/baolong_zhu/blog/static/1963110912014530108635/
另外:
http://tieba.baidu.com/p/2425443688

修改

在上面的Makefile中:

OPENCV_LINK =-L/usr/local/arm/lib -lcv -lcxcore -lhighgui -lpthread -lrt

在lib文件下没有发现相关链接文件名,应该修改一下,猜测可能是我与前面参考文章作者使用的opencv的版本不同的缘故,导致编译生成的库文件名字不同,新版本产生的库名前面普遍有lib开头。

  1. 修改1
    -lcv应该是libcv.so库文件,但是我在make install后的lib里没有发现libcv.so文件,于是将其更改
  2. 修改2
    猜测libcxcore.so应该是libopencv_core.so
  3. 修改3
    libhighgui.so为libopencv_highgui.so

因此,基于上面的库名的猜测,将链接命令行修改为:

OPENCV_LINK =-L/usr/local/arm/lib -lopencv_calib3d -lopencv_core -lopencv_highgui -lpthread -lrt

但是编译后出现
OpenCV Error: Unspecified error (The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script) in cvNamedWindow, file /work/opencv-2.4.9/modules/highgui/src/window.cpp, line 483
terminate called after throwing an instance of ‘cv::Exception’
what(): /work/opencv-2.4.9/modules/highgui/src/window.cpp:483: error: (-2) The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function cvNamedWindow

Aborted

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值