linux_+qt4.7+opencv2.2移植到tq2440开发板linux +qt4.7+opencv2.2移植到tq2440开发板
以下操作在Fedora下使用超级用户进行 我已经安装了交叉编译器arm-linux-gcc 4.3.3和qt4.5的x86和arm版本 在目录/opt/EmbedSky下。
修改配置文件/etc/profile 添加
pathmunge /opt/EmbedSky/4.3.3/bin
安装CMake
OpenCV 2.1的版本,必须使用CMake创建Makefile。我使用的CMake版本是2.6-Linux-i386的,是fedora通过软件添加和载卸...
linux +qt4.7+opencv2.2移植到tq2440开发板
以下操作在Fedora下使用超级用户进行 我已经安装了交叉编译器arm-linux-gcc 4.3.3和qt4.5的x86和arm版本 在目录/opt/EmbedSky下。
修改配置文件/etc/profile 添加
pathmunge /opt/EmbedSky/4.3.3/bin
安装CMake
OpenCV 2.1的版本,必须使用CMake创建Makefile。我使用的CMake版本是2.6-Linux-i386的,是fedora通过软件添加和载卸功能添加的(这个cmake要重新安装,而且要添加bin进去路径)
编译OpenCV:
1、解压OpenCV 2.1到/opt/EmbedSky/OpenCV-2.1.0目录下
2、在超级用户下,运行cmake-gui命令
选择源代码目录:/opt/EmbedSky/OpenCV-2.1.0
选择Build目录:/home/pww71/opencv-arm/
点击Configure,保持generator为Unix Makefiles,选择Specify options for cross-compiling,点击Next
Operating System填写arm-inux
C Compilers选择/opt/EmbedSky/4.3.3/bin/arm-linux-gcc
C++ Compilers选择/opt/EmbedSky/4.3.3/bin/arm-linux-g++
程序库的Target Root填写/opt/EmbedSky/4.3.3/,然后点击Finish
修改默认配置,
X86-opencv的cmake配置 添加BUILD_EXAMPLES 和 OPENCV_BUILD_3RDPARTY_LIBS 前面的日志已经介绍过了
arm-opencv的cmake配置 不要加BUILD_EXAMPLES 和 OPENCV_BUILD_3RDPARTY_LIBS 和 去掉 WITH_TIFF
CMAKE_EXE_LINKER_FLAGS原来为空,加上-lpthread -lrt
x86的opencv默认安装目录为/usr/local,对于arm的交叉编译的库来说并不合适,所以把CMAKE_INSTALL_PREFIX变量改为/usr/local/arm/lib/opencv/
没有安装tiff图像的支持,去掉WITH_TIFF
点击Generate生成Makefile
3、使用超级用户 进入目录/home/pww71/opencv-arm,运行make编译opencv
4、运行make install,将opencv生成的库和头文件安装到目录/usr/local/arm/lib/opencv/
QT的配置 已经解压和安装了qt4.5的x86的库和arm交叉交叉编译的库
安装qtcreator时 记得安装地址 并且修改配置文件/etc/profile 添加上qtcreator的安装地址的bin目录 我的是pathmunge pathmunge /opt/EmbedSky/qtcreator-1.3.0/bin
为了能找到qmake 还要添加路径
pathmunge /opt/EmbedSky/qt-4.5/_install/x86/bin
pathmunge /opt/EmbedSky/qt-4.5/_install/am/bin
到配置文件/etc/profile中
使用超级用户 输入命令source /etc/profile 后 再执行qtcreator命令 打开Qtcreator界面
进入Tools-Options左侧选择QT4-Qt Versions 右侧选项里:如果通过软件添加和载卸工具添加了qt4的话 Auto-detected会自动的选择Qt in PATH /usr/local/bin/qmake-qt4 用这个qmake工具生成的可执行文件不用添加-qws命令行参数
自己安装的qt4.5 我是如下配置
Qt in PATH /opt/EmbedSky/qt-4.5/_install/arm/bin/qmake
添加Manual x86-qt-4.5.0 /opt/EmbedSky/qt-4.5/_install/x86/bin/qmake
生成的可执行文件需要添加-qws命令行参数
分别点击rebuild 最后点击ok
Build Settings 中根据需要Add刚才配置的选择
BUild configuration for ... 也选择相应的选项
在QT工程文件.Pro中添加以下内容
INCLUDEPATH += /usr/local/include/opencv
LIBS += /usr/local/lib/libcv.so \
/usr/local/lib/libcvaux.so \
/usr/local/lib/libcxcore.so \
/usr/local/lib/libhighgui.so \
/usr/local/lib/libml.so
pc仿真必须将以上库还要添加到项目文件夹里
如果是arm开发板的程序则添加以下内容
INCLUDEPATH += /usr/local/arm/lib/opencv/include/opencv
LIBS += /usr/local/arm/lib/opencv/lib/libcv.so \
/usr/local/arm/lib/opencv/lib/libcvaux.so \
/usr/local/arm/lib/opencv/lib/libcxcore.so \
/usr/local/arm/lib/opencv/lib/libhighgui.so \
/usr/local/arm/lib/opencv/lib/libml.so
编译生成可执行文件 移植到开发板 提示缺少什么库就按提示添加相应的图像库到lib中 以及qt4.5的库 和字体都添加到相应的目录中 中间有一个这个提示
QWSDisplay::Data::init: Invalid argument
Client can't attach to main ram memory.
Aborted
这个是表示缺少命令行参数-qws 是Qt4的问
运行命令添加该参数 ok一切正常
注意的是qtcreator。bin不能用于pc的编程 总是提示找不到opencv图像库
系统自带的qt适合pc编程 如果提示无法保存文件 可以用系统管理登录 chmod文件属性
自己安装的qt 只能用于arm的交叉编译
在安装qt4.7的过程中 又发现pc版本总是提示找不到opencv图像库 后来卸载了qt4.5和qt3,来回重装qt4.7又可以了 然后马上保存的系统。
******pc编程如果带opencv库 会提示找不到库文件。
pc的编译器换成交叉编译时 先运行qmake生成make文件 直接运行rebuilt不行 会提示opencv的库文件格式错误。
Qt creator 添加qmake rebuild出错
[日期:2011-04-23]
来源:Linux社区 作者:c05170519
在Qt creater-->tools-->Qptios-->Qt4-->Qt Versions中添加qmake(qt embeddedd版的),然后Rebuild Degugging
helper的时候(就是把那个红x变成绿勾)的时候出现下面的错误:
Building debugging helper library in /QT/qte-4.5.0/qtc-debugging-helper/
Running /usr/bin/make distclean...
rm -f gdbmacros.o
rm -f *~ core *.core
rm -f libgdbmacros.so.1.0.0
rm -f libgdbmacros.so libgdbmacros.so.1 libgdbmacros.so.1.0 libgdbmacros.a
rm -f Makefile
Running /QT/qte-4.5.0/bin/qmake ...
Cannot find file: .
Running /usr/bin/make ...
arm-linux-g++ -c -pipe -g -Wall -W -D_REENTRANT -fPIC -DUSE_QT_GUI=1 -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I../mkspecs/qws/linux-arm-g++ -I. -I../include/QtCore -I../include/QtGui -I../include -I. -I. -o gdbmacros.o gdbmacros.cpp
make: arm-linux-g++ï¼å½ä»¤æªæ¾å°
make: *** [gdbmacros.o] é误 127
最后两行还是乱码,百度google无解。
具体怎么找出毛病的忘了,只记得好像上面把qmake添加进环境变量时,如果写进/etc/bash.bashrc,auto-detect是找不到它的,于是对/etc/profle和/etc/bash.bashrc这两个文件产生好奇,一问老师才知道,前者是全局的,对整个系统都有作用的,而后者只对终端起作用,而我的qmake虽然写的是/etc/profile,但是交叉编译器却写进/etc/bash,bashrc(图省事,修改profile要重启电脑,后者只要source以下就可以了),rebuild时需要调用相关的交叉编译器,写在/etc/bash,bashrc的话编译器就找不到了,所以会出错。
网上也找到一位东大读博哥么的博客,他是在相关qmake.conf做了修改,在交叉编译器前面加上准确的地址,似乎也能通过,但是包含交叉编译器的qmake.conf有很多同名文件,他修改可能是“正确的”一个,但是其他的都没动,谁知道以后会出什么错呢?
解决
: 把交叉编译器写进/etc/profile,而不是/etc/bash.bash.rc
配置qtcreator的ARM编译环境
1 下载arm§920t-eabi.tar.gz(arm§-linux-gcc 4.1.2),解压到/opt/arm/4.1.2/目录下
2 打开qt§creator的Options选项,选择QT4选项,添加一个编译环境,Version name填Qte4.6.3 (这个可以随便填),qmake location填/opt/qt§e/bin/qmake(我先前已经编译了QT4.6.3 embeded,并安装在/opt/qt§e/目录下,自己相应修改),点Rebuild,应该会出错。
3 打开命令行,输入sudo ln -s /opt/arm/4.1.2/bin/arm-linux-g++§ /usr/bin/ ,为arm-linux-g++§建立符号链接,因为qtcreator貌似只认/usr/bin/目录下的,PATH里面无效。
4 到这一步已经快好了,但是点Rebuild还是会出错,错误的原因是什么 #include
什么的,这是因为arm-linux-g++§找不到头文件。首先,我是按照别人说的在.bashrc里面加入了环境变量:export CPLUS_INCLUDE_PATH=/opt/arm/4.1.2/arm-angstrom-linux-gnueabi/include/c++:/opt/arm/4.1.2/arm-angstrom-linux-gnueabi/include/c++/arm-angstrom-linux-gnueabi ,然后重新打开qtcreator,点Rebuild,不行,还是出错。但是在~/qte/example/widgets/calculator/目录下,执行/opt/qte/qmake 然后make,已经没有问题了。所以得出结论是,GDM在打开Gnome的时候不会执行.bashrc文件。我需要找一个GDM会执行的文件放export。google的半天,说/etc/gdm/Xsession文件会被执行。但是我看了看这个文件,发现和网上说的不一样,我的是Archlinux。我这个貌似XDM才会执行。又google+乱看了半天,终于被我发现/etc/X11/xinit/xinitrc.d/目录下的都会被执行,于是写了一个cplus_include_path的bash文件,在里面export了CPLUS_INCLUDE_PATH这个环境变量。注销重新登陆,打开qtcreator,然后Rebuild,OK,succeed了。开心。
5 一不小心手贱点了QT IN PATH的Rebuild,fuck了,又出错了。而且出错信息显示,Linux上的QT也用了arm-linux-g++在编译,这当然要出错了。到命令行,unset了CPLUS_INCLUDE_PATH,又到calculator目录下,用本机的qmake,make,没有错误。总结下,就是CPLUS_INCLUDE_PATH是所有的g++都会使用的一个环境变量。把export CPLUS_INCLUDE_PATH=/opt/arm/4.1.2/arm-angstrom-linux-gnueabi/include/c++:/opt/arm/4.1.2/arm-angstrom-linux-gnueabi/include/c++/arm-angstrom-linux-gnueabi改成了export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/opt/arm/4.1.2/arm-angstrom-linux-gnueabi/include/c++:/opt/arm/4.1.2/arm-angstrom-linux-gnueabi/include/c++/arm-angstrom-linux-gnueabi,注销,测试,还是出错。export|grep CPLUS,发现CPLUS_INCLUDE_PATH这个环境变量与来是没有的,悲剧。此方法不通。又不断的尝试。我在想能不能把每个不同版本的g++的include path都独立开来。沿着这个方向,我找到了specs,看了老半天,这个也不方便,要用自定义的覆盖默认的specs,没有配置文件可以修改。后来找到了qmake的配置文件去了,发现qmake.conf可以自定义g++ gcc的参数,兴奋啊。找到了这个网页http://doc.trolltech.com/4.5/qmake-variable-reference.html#qmakespec§ 从头到尾大概的读了便,QMAKE_CXXFLAGS 看上去比较靠谱,于是编辑/opt/qte/mkspecs/linux-g++/qmake.conf,里面貌似没有提到这个变量,但是文件里面include了几个文件。一一打开这几个文件,最后在/opt/qte/mkspecs/common/g++.conf里发现了这个变量。原来的是QMAKE_CXXFLAGS += $$QMAKE_CFLAGS,我增加了一行QMAKE_CXXFLAGS += -I/opt/arm/4.1.2/arm-angstrom-linux-gnueabi/include/c++ -I/opt/arm/4.1.2/arm-angstrom-linux-gnueabi/include/c++/arm-angstrom-linux-gnueabi,然后把/etc/X11/xinit/xinitrc.d/cplus_include_path删除,重新登陆,打开qtcreator,先对QT IN PATH进行Rebuild,OK,没有错误,然后对Qte 4.6.3 进行Rebuild,wonderful,也没有错误。终于把这个问题解决了。
6 看似很简单的一个问题,牵扯太多了,问题终于解决,真不容易啊。
特此记载。。。。。。。。。。。。。。。。。。。。。。。。
opencv2.2支持qt
移植时选择 cmake界面 选择with-qt和with-qt-opengl 另外 qt-qmake-executable要选择4.6以上的qt版本的qmake
Qt4.7的配置命令:
./configure -embedded arm -release -opensource -silent -qt-libpng -qt-libjpeg -qt-libmng -qt-libtiff -no-multimedia -make libs -nomake tools -nomake examples -nomake docs -nomake demos -rpath -qt-kbd-linuxinput -qt-mouse-tslib -xplatform qws/linux-arm-g++ -little-endian -qt-freetype -depths 16,18 -qt-gfx-linuxfb -no-qt3support -no-nis -no-cups -no-iconv -no-dbus -no-openssl -no-fast -no-accessibility -no-scripttools -no-mmx -no-multimedia -no-svg -no-webkit -no-3dnow -no-sse -no-sse2 -no-gfx-transformed -no-gfx-multiscreen -no-gfx-vnc -no-gfx-qvfb -no-glib -prefix /opt/EmbedSky/qt-4.7-arm -I /opt/EmbedSky/tslib_install/include -L /opt/EmbedSky/tslib_install/lib
libpng.so ,libz.so和librt.so使用交叉编译器路径下的本人是4.33的 ../4.33/arm-none-linux-gnueabi/libc/armv4t/usr/lib/目录
提示错误:
OpenCV-2.2.0/modules/ml/src/gbt.cpp:474: error: 'expl' was not declared in this scope
修改如下
#include "precomp.hpp"
#include
#include
using namespace std;
#define pCvSeq CvSeq*
#define pCvDTreeNode CvDTreeNode*
#define CV_CMP_FLOAT(a,b) ((a) < (b))
static CV_IMPLEMENT_QSORT_EX( icvSortFloat, float, CV_CMP_FLOAT, float)
#if ANDROID // <-- 删掉
#define expl(x) exp(x)
#endif // <-- 删掉...
提示错误:
../../lib/libopencv_features2d.so.2.2.0: undefined reference to `cv::SIFT::SIFT(double, bool, bool, int, int, int, int)'
参考以下网址
https://code.ros.org/trac/opencv/changeset/4609
然后拷贝修改的文件过去
cp /home/pww71/features2d.hpp /opt/OpenCV-2.2.0/modules/features2d/include/opencv2/features2d/
cp /home/pww71/sift.cpp /opt/OpenCV-2.2.0/modules/features2d/src/
cp /home/pww71/gbt.cpp /opt/OpenCV-2.2.0/modules/ml/src/gbt.cpp
提示错误:
/opt/EmbedSky/4.3.3/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../../arm-none-linux-gnueabi/bin/ld: warning: libQtGui.so.4, needed by ../../lib/libopencv_highgui.so, not found (try using -rpath or -rpath-link)
出现这个错误是因为 交叉编译器没有找到qt库 拷贝过去
cp /opt/EmbedSky/qt-4.7-arm/lib/*.so.4 /opt/EmbedSky/4.3.3/arm-none-linux-gnueabi/libc/armv4t/usr/lib/
qt4.7 pro文件
INCLUDEPATH += /usr/local/arm/lib/opencv/include/ \
/usr/local/arm/lib/opencv/include/opencv
LIBS += /lib/libopencv_core.so \
/lib/libopencv_highgui.so \
/lib/libopencv_ml.so \
/lib/libopencv_calib3d.so \
/lib/libopencv_contrib.so \
/lib/libopencv_features2d.so \
/lib/libopencv_flann.so \
/lib/libopencv_gpu.so \
/lib/libopencv_imgproc.so \
/lib/libopencv_legacy.so \
/lib/libopencv_objdetect.so \
/lib/libopencv_video.so
LIBS += /usr/local/lib/libopencv_core.so \
/usr/local/lib/libopencv_highgui.so \
/usr/local/lib/libopencv_ml.so \
/usr/local/lib/libopencv_calib3d.so \
/usr/local/lib/libopencv_contrib.so \
/usr/local/lib/libopencv_features2d.so \
/usr/local/lib/libopencv_flann.so \
/usr/local/lib/libopencv_gpu.so \
/usr/local/lib/libopencv_imgproc.so \
/usr/local/lib/libopencv_legacy.so \
/usr/local/lib/libopencv_objdetect.so \
/usr/local/lib/libopencv_video.so
昨天 总算把linux下的opencv配置完成了 现在共享给大家
1,下载OpenCV-2.1.0tar.bz2
2,解压到pww文件夹 我用的home下pww文件夹
3,下载安装CMake-gui Qt4接口的 以下是本人的解压opencv2.1.0tar.bz2文件的目录
源码路径:/home/pww/temp/opencv-2.1.0
库建立目录:/home/pww/temp/opencv-2.1.0/build
4,选择需要的选项 configure-》generate
configure错误:
CMake Error: your CXX compiler: "CMAKE_CXX_COMPILER-NOTFOUND" was not found. Please set CMAKE_CXX_COMPILER to a valid compiler path or name.
sudo apt-get install build-essential 升级相应文件
configure-》generate ok
5,进入build目录 make
6,进入bin目录 运行一个程序
提示错误:主要是图像显示需要的gtk+2.0 具体哪些不记得了 反正按提示的安装相应的东东
7,安装好后 重新make一次 然后再运行程序 ok 运行正常了
无线网卡dwa-125的fedora14下的驱动
include/ifacertmp_usb.h 文件,把:
#define RTUSB_URB_ALLOC_BUFFER(pUsb_Dev, BufSize, pDma_addr) usb_buffer_alloc(pUsb_Dev, BufSize, GFP_ATOMIC, pDma_addr)
#define RTUSB_URB_FREE_BUFFER(pUsb_Dev, BufSize, pTransferBuf, Dma_addr) usb_buffer_free(pUsb_Dev, BufSize, pTransferBuf, Dma_addr)
替换成:
#define RTUSB_URB_ALLOC_BUFFER(pUsb_Dev, BufSize, pDma_addr) usb_alloc_coherent(pUsb_Dev, BufSize, GFP_ATOMIC, pDma_addr)
#define RTUSB_URB_FREE_BUFFER(pUsb_Dev, BufSize, pTransferBuf, Dma_addr) usb_free_coherent(pUsb_Dev, BufSize, pTransferBuf, Dma_addr)
编译OPENCV2.2
reference URL:
http://opencv.willowgarage.com/wiki/InstallGuide
安装库:
apt-get install build-essential cmake pkg-config libpng12-0 libpng12-dev libpng++-dev libpng3 libpnglite-dev libpngwriter0-dev libpngwriter0c2 zlib1g-dbg zlib1g zlib1g-dev libjasper-dev libjasper-runtime libjasper1 pngtools libtiff4-dev libtiff4 libtiffxx0c2 libtiff-tools libjpeg8 libjpeg8-dev libjpeg8-dbg ffmpeg libavcodec-dev libavcodec52 libavformat52 libavformat-dev libgstreamer0.10-0-dbg libgstreamer0.10-0 libgstreamer0.10-dev libxine1-ffmpeg libxine-dev libxine1-bin libunicap2 libunicap2-dev libdc1394-22-dev libdc1394-22 libdc1394-utils swig libv4l-0 python-numpy libpython2.6 python-dev python2.6-dev
操作步骤:
cd ~/projects/Opencv2.2 # the directory containing INSTALL, CMakeLists.txt etc.
mkdir release
cd release
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/opencv2.2 -D BUILD_PYTHON_SUPPORT=ON ..
make
make install
添加库路径:
echo /usr/local/opencv2.2/lib > /etc/ld.so.conf.d/opencv.conf
设置pkg-config
echo 'export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/opencv2.2/lib/pkgconfig' >> /root/.bashrc
source /root/.bashrc
编译android下的opencv库:
http://opencv.willowgarage.com/wiki/Android
arm-2009q3交叉编译opencv2.0.0
操作步骤:
cd ~/projects/Opencv2.0.0
./configure --host=arm-none-linux-gnueabi --without-gtk --without-carbon --without-quicktime --without-1394libs --without-ffmpeg --without-python --without-swig --without-v4l --enable-shared --disable-apps CXX=arm-none-linux-gnueabi-g++ CPPFLAGS=-I/usr/include --prefix=/usr/local/opencv_arm
make
make install
编译OpenCV for arm-linux (转)
2011-03-09 17:25
重要
OpenCV是Intel支持的开源计算机视觉库。它由一系列C和少量C++类构成,实现了图像处理和计算机视觉方面的很多通用算法。它不依赖于其它的外部库—尽管也可以使用某些外部库。
OpenCV使用BSD License,对非商业应用和商业应用都可以免费使用。
OpenCV的主要应用环境是Windows和Linux,对于嵌入式系统如arm-linux,很少有资料提到,因此将我在arm-linux编译过程下来和大家分享。
预备工作:
a. 安装交叉编译链
我使用的是arm-linux-gcc 4.3.2,解压到目录/usr/local/arm/4.3.2,然后在环境变量PATH中增加/usr/local/arm/4.3.2/bin
b. 安装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
编译OpenCV:
1、解压OpenCV 2.1到/usr/local/OpenCV-2.1.0目录下
2、创建/usr/local/opencv-arm/目录,作为CMake编译arm版本的工作目录
3、在X环境下,运行cmake-gui
选择源代码目录:/usr/local/OpenCV-2.1.0
选择Build目录:/usr/local/opencv-arm/
点击Configure,保持generator为Unix Makefiles,选择Specify options for cross-compiling,点击Next
Operating System填写arm-inux
C Compilers填写/usr/local/arm/4.3.2/bin/arm-linux-gcc
C++ Compilers填写/usr/local/arm/4.3.2/bin/arm-linux-g++
程序库的Target Root填写/usr/local/arm/4.3.2/,然后点击Finish
修改默认配置,默认安装目录为/usr/local,对于交叉编译的库来说并不合适,所以我把CMAKE_INSTALL_PREFIX变量改为/usr/local/arm/lib/opencv/
另外,我没有安装tiff图像的支持,因此去掉WITH_TIFF
点击Generate生成Makefile
4、在终端界面中,进入目录/usr/local/opencv-arm,运行make编译opencv
编译时发现如下错误:
Linking CXX executable ../../bin/opencv_createsamples
../../lib/libcxcore.so: undefined reference to `clock_gettime'
../../lib/libcxcore.so: undefined reference to `pthread_key_create'
../../lib/libcxcore.so: undefined reference to `pthread_getspecific'
../../lib/libcxcore.so: undefined reference to `pthread_setspecific'
原因是cmake不认识我定义的arm-linux系统标记,没有加上库pthread和rt的链接选项
5、修改CMakeCache.txt,CMAKE_EXE_LINKER_FLAGS原来为空,加上-lpthread -lrt,重新编译,错误消除
6、运行make install,将opencv生成的库和头文件安装到目录/usr/local/arm/lib/opencv/
测试OpenCV库
1、首先确认一下库是否已编译正确及其安装位置
查看头文件:
[root@localhost opencv-arm]# ls /usr/local/arm/lib/opencv/include/opencv/
cvaux.h cvcompat.h cv.hpp cvtypes.h cvvidsurv.hpp cxcore.h cxerror.h cxmat.hpp cxoperations.hpp highgui.h ml.h
cvaux.hpp cv.h cvinternal.h cvver.h cvwimage.h cxcore.hpp cxflann.h cxmisc.h cxtypes.h highgui.hpp
[root@localhost opencv-arm]# ls /usr/local/arm/lib/opencv/include/opencv/
cvaux.h cvcompat.h cv.hpp cvtypes.h cvvidsurv.hpp cxcore.h cxerror.h cxmat.hpp cxoperations.hpp highgui.h ml.h
cvaux.hpp cv.h cvinternal.h cvver.h cvwimage.h cxcore.hpp cxflann.h cxmisc.h cxtypes.h highgui.hpp
查看库文件:
[root@localhost opencv-arm]# ls /usr/local/arm/lib/opencv/lib
libcv.a libcvaux.a libcvaux.so libcv.so libcxcore.a libcxcore.so libhighgui.a libhighgui.so libml.a libml.so
[root@localhost opencv-arm]# ls /usr/local/arm/lib/opencv/lib
libcv.a libcvaux.a libcvaux.so libcv.so libcxcore.a libcxcore.so libhighgui.a libhighgui.so libml.a libml.so
2、写个简单的测试程序,打开摄像头并创建一个窗口显示
// test.cpp
#include
#include
#include
int main()
{
CvCapture* capture = NULL;
IplImage* frame = NULL;
if( !(capture = cvCaptureFromCAM(-1)))
{
fprintf(stderr, "Can not open camera.\n");
return -1;
}
cvNamedWindow("video", 1);
while(frame = cvQueryFrame( capture ) )
{
cvShowImage("video", frame);
}
cvDestroyWindow("video");
cvReleaseCapture(&capture);
return 0;
}
// test.cpp
#include
#include
#include
3、编译链接测试程序
arm-linux-g++ -I/usr/local/arm/lib/opencv/include/opencv/ -L/usr/local/arm/lib/opencv/lib/ -lcv -lcxcore -lhighgui -lpthread -lrt -o test test.cpp
4、复制程序到嵌入式系统中运行
首先复制主机/usr/local/arm/lib/opencv/lib/下面的几个.so文件到嵌入式Linux系统的/lib/目录下,再复制我们编译的test到嵌入式系统/opt/myworks/目录下(并确保文件test属性为可执行),如果test可正常运行没有缺少库文件,说明我们编译的arm-linux版OpenCV库已经可以正常使用。
shell的初始化文件:/etc/profile和/etc /bashrc(bash.bashrc)
上一篇 / 下一篇 2011-02-24 14:53:18 / 个人分类:Error: Reference source not found
查看( 13 ) / 评论( 0 ) / 评分( 0 / 0 )
bash的几个初始化文件 - [Ubuntu]
(1)/etc/profile
全局(公有)配置,不管是哪个用户,登录时都会读取该文件。
(2)/ect/bashrc
Ubuntu没有此文件,与之对应的是/ect/bash.bashrc
它也是全局(公有)的
bash执行时,不管是何种方式,都会读取此文件。
(3)~/.profile
若bash是以login方式执行时,读取~/.bash_profile,若它不存在,则读取~/.bash_login,若前两者不存在,读取~/.profile。
另外,图形模式登录时,此文件将被读取,即使存在~/.bash_profile和~/.bash_login。
(4)~/.bash_login
若bash是以login方式执行时,读取~/.bash_profile,若它不存在,则读取~/.bash_login,若前两者不存在,读取~/.profile。
(5)~/.bash_profile
Unbutu默认没有此文件,可新建。
只有bash是以login形式执行时,才会读取此文件。通常该配置文件还会配置成去读取~/.bashrc。
(6)~/.bashrc
当bash是以non-login形式执行时,读取此文件。若是以login形式执行,则不会读取此文件。
(7)~/.bash_logout
注销时,且是longin形式,此文件才会读取。也就是说,在文本模式注销时,此文件会被读取,图形模式注销时,此文件不会被读取。
下面是在本机的几个例子:
1. 图形模式登录时,顺序读取:/etc/profile和~/.profile
2. 图形模式登录后,打开终端时,顺序读取:/etc/bash.bashrc和~/.bashrc
3. 文本模式登录时,顺序读取:/etc/bash.bashrc,/etc/profile和~/.bash_profile
4. 从其它用户su到该用户,则分两种情况:
(1)如果带-l参数(或-参数,--login参数),如:su -l username,则bash是lonin的,它将顺序读取以下配置文件:/etc/bash.bashrc,/etc/profile和~/.bash_profile。
(2)如果没有带-l参数,则bash是non-login的,它将顺序读取:/etc/bash.bashrc和~/.bashrc
5. 注销时,或退出su登录的用户,如果是longin方式,那么bash会读取:~/.bash_logout
6. 执行自定义的shell文件时,若使用“bash -l a.sh”的方式,则bash会读取行:/etc/profile和~/.bash_profile,若使用其它方式,如:bash a.sh, ./a.sh,sh a.sh(这个不属于bash shell),则不会读取上面的任何文件。
7. 上面的例子凡是读取到~/.bash_profile的,若该文件不存在,则读取~/.bash_login,若前两者不存在,读取~/.profile。
OpenCV2.1在Linux下的安装(以Ubuntu为例)
(2010-11-03 17:34:29)转载§
标签: 编译时间§
编译程序§
分类: OpenCV§
1、下载OpenCV2.1的源代码:从http://sourceforge.net/projects/opencvlibrary§ 下载OpenCV源码,这里假设它的文件名为OpenCV-2.1.0.tar.bz2,然后解压:
tar jvxf OpenCV-2.1.0.tar.bz2 –C ~/
执行命令后把代码解压到“home/用户名”目录下,目录名为:OpenCV-2.1.0
2、下载Cmake并安装。在Cmake的官方网站http://www.cmake.org/§下载Linux下的版本,建议用已经编译好的版本,以节省编译时间,这里以cmake-2.8.2-Linux-i386.tar.gz为例。解压:
tar zxvf cmake-2.8.2-Linux-i386.tar.gz –C ~/
执行命令后把代码解压到“home/用户名”目录下,目录名为:cmake-2.8.2-Linux-i386,执行文件就放在bin目录下
3、安装必要的依赖包。为了实现OpenCV的摄像头捕捉功能和多文件格式支持,需要安装一些必要的工具。在Ubuntu下的安装过程如下:
sudo apt-get install libavformat-dev libswscale-dev
sudo apt-get install libgtk2.0-dev
4、用Cmake生成Makefile。在“home/用户名”目录下建立一个目录“opencv_build”。进入cmake-2.8.2-Linux-i386\bin目录,运行:
./cmake-gui
然后选择源代码目目录:OpenCV-2.1.0和存放生产文件的目录opencv_build,点Configure,然后点Generate
5、编译源代码。进入目录opencv_build,输入:
make
经历一段时间编译完成后,再运行
sudo make install
安装OpenCV到usr/local中
6、添加环境变量PKG_CONFIG_PATH:
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/home/tiger/opencv_build/unix-install
当输入:pkg-config --cflags opencv 出现如下提示:
tiger@ubuntu:~/opencv_build$ pkg-config --cflags opencv
-I/usr/local/include/opencv
当输入:pkg-config --libs opencv出现如下提示:
tiger@ubuntu:~/opencv_build$ pkg-config --libs opencv
-L/usr/local/lib -lml -lcvaux -lhighgui -lcv -lcxcore
这样就安装好了
7、测试
进入OpenCV-2.1.0下的samples\c目录,利用下面的命令编译程序,这假设opencv-prgm.c为代码
gcc `pkg-config --cflags --libs opencv` -o my-opencv-prgm my-opencv-prgm.c
编译后用
./ my-opencv-prgm
测试。
OpenCV 2.2 CrossCompilation for ARM – fixes
Reported by:
hyblade
Owned by:
Priority:
major
Component:
build/install problems
Version:
2.2
Keywords:
ARM, g++, CodeSourcery, OMAP
Cc:
Description
Hello there,
A f
本文档为【linux_+qt4.7+opencv2.2移植到tq2440开发板】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。