废话不多说,下载源码和编译什么的我就直接跳过了,还有其他支持的库可以参考OpenCV在x86上的配置方法。最近参加学校组织的嵌入式比赛,搞了一个很非主流的板子,虽然觉得不怎么样,但是毕竟是国产还是要支持一下的
进入源码的目录,执行:
然后是(此步骤只适用与OpenCV2.2以前的版本,以后的版本省去了这一步,直接使用cmake,不过原理应该差不多,大家可以自己尝试一下)./configure --host=unicore32-linux --without-gtk --without-carbon --without-quicktime --without-1394libs --without-ffmpeg --without-python --without-swig --enable-static --disable-shared --disable-apps CXX=unicore32-linux-g++ CPPFLAGS=-I/usr/unicore/gnu-toolchain-unicore/uc4-1.0.5-hard/unicore32-linux/include --prefix=/usr/opencv
当安装完成以后就是环境变量的配置了make
make install
sudo gedit /etc/bash.bashrc
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/opencv/lib/pkgconfig
接着,根据需要在/usr/opencv/lib/pkgconfig/opencv.pc的Libs项中加入参数-lpthread、-ldl之类,例如
Libs: -L${libdir} -lcv -lcxcore -lcvaux -lpthread -lrt -lm -lpng -ljpeg -lz -lm –ldl
编译时使用(如果出现undefined reference,后面的几个引用可以换着顺序试一下)
或者使用unicore32-linux-g++ -o test test.cpp `pkg-config opencv --cflags --libs`
unicore32-linux-g++ test.c -o test -I/usr/opencv/include/opencv -L/usr/opencv/lib -lcv -lcxcore -lpthread -lrt -lcvaux -lm -lpng -ljpeg -lz -lml -lhighgui –ldl
注意:因为我用的是Qt的图形库,所以这里我编译的时候有--without -gtk参数,可能无法直接运行,所以不要写一些显示相关的函数
遇到的错误:
在执行./configure时,automake生成Makefile文件会提示错误这时候需要修改automake文件下的config.sub文件Invalid configuration `unicore32-linux': machine `unicore32' not recognized
在case $basic_machine in下增加vim ./automake/config.sub
在# Recognize the basic CPU types with company name下增加
| unicore32 \
| unicore32-* \
参考文章