Archive for category OpenCV

在Ubuntu14.10上要如何从源码编译到安装OpenCV这个计算机视觉库呢?下面我们一直来感受下要如何操作:

1.安装必要工具:

由于需要下载源码和编译源码,我们使用sudo apt-get install git cmake命令安装最基本的工具。

2.编译安装OpenCV:

a.下载源码:

cd ~/

git clone https://github.com/Itseez/opencv.git

b.编译源码:

cd opencv

mkdir release

cd release

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..

(release目录是为了保存编译过程产生的中间和目标文件,cmake是根据相关的配置文件生成Makefile)

make

c.安装OpenCV:

sudo make install

至此,相关库安装完成。

参考网址:

http://docs.opencv.org/doc/tutorials/introduction/linux_install/linux_install.html?highlight=install

Android NDK包解压在:$HOME/android/android_ide/android-ndk

Android SDK包解压在:$HOME/android/android_ide/android-sdk-linux/

从http://sourceforge.net/projects/opencvlibrary/files/opencv-android/下

载所需版本的OpenCV4Android库压缩包(我这边下载的是2.4.11,包名为OpenCV-2.4.11-android-

sdk.zip),

执行unzip OpenCV-2.4.11-android-sdk.zip命令解压到目录OpenCV-android-sdk中,接下来运行eclipse,在“Project Explorer”中单击右键,单击右键菜单“Import…”,弹出如下对话框:

选择上图中的“Existing Android Code into Workspace”,然后单周“Next>”,弹出如下对话框:

在“Root

Directory:”后面点击“Browse…”,弹出的对话框选择刚才解压出来的Opencv-android-sdk目录(如/home/xinu

/android/android_ide/OpenCV-android-sdk),默认会把相关的库和例子源码项目选中,此时点击“Finish”按

键即进行导入操作。此时在“Console”框中会有如下错误提示:

23:13:17 **** Auto Build of configuration Default for project OpenCV Tutorial 2 – Mixed Processing ****

/ndk-build.cmd

Cannot run program "/ndk-build.cmd": Unknown reason

看来是我们的NDK工具没有添加正确,此时我们在“Project Explorer”选中出错的项目,然后点击菜单“Project”-“Properties”,此时弹出如下对话框:

上图的“C/C++ Build”一项点击后,在右边的“Build

Command:”一项可以看到值为“${NDKROOT}/ndk_build.cmd”,看来是NDKROOT没有设置,此时,我们点击“OK”退出

后再点击菜单“Windows”-“Preferences”,弹出如下对话框:

在上图中点击“Android”-“NDK”,在右击的“NDK Location:”一项选择上相应的NDK包路径(如/home/xinu/android/android_ide/android-ndk),点击“OK”,重启eclipse后,仍有如下提示:

23:36:37 **** Auto Build of configuration Default for project OpenCV Tutorial 2 – Mixed Processing ****

/ndk-build.cmd

Cannot run program "/ndk-build.cmd": Unknown reason

Error: Program "/ndk-build.cmd" not found in PATH

PATH=[/home/xinu/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/xinu/golang/go/bin]

23:36:37 Build Finished (took 41ms)

此时,我们退出eclipse,在~/.profile文件中添加如下语句:

export PATH=$PATH:$HOME/android/android_ide/android-ndk:$HOME/android/android_ide/android-sdk-linux/platform-tools

然后注销后重新登录Ubuntu,此时再运行eclipse就不会有错误了,接下来我们运行例子Camera

Preview,有如下运行结果(运行前需到OpenCV-android-sdk/apk目录下将

OpenCV_2.4.11_Manager_2.20_armeabi.apk

应用先安装,该APK有针对不同的平台区分,请根据实际情况安装相应平台版本):

http://docs.opencv.org/doc/tutorials/introduction/android_binary_package/O4A_SDK.html

本次的代码在Ubuntu10.04上测试,功能是(OpenCV是2.0的,在2.0中的cvSaveImage函数里多了一个参数可以设置保存

图片的质量)从电脑上的摄像头捕捉视频并一秒保存一张图片的效果并可以修改保存的图片的像素功能出发,实现了毫秒级保存图片的功能,代码如下(本程序在

OpenCV1.0下编译不通过):

//使用OpenCV实现获取摄像头数据并毫秒级(在我的机上70ms左右保存一张,连续保存)保存成一张jpg图片,jpg图片的大小可调,文件名为save_cam.c

//编译方法为:g++ `pkg-config opencv –libs –cflags opencv` savecam.c –o savecam

#include

#include

#include

#include

#include

#include

#include

#include

#include

int main( int argc,char ** argv )

{

//声明IplImage指针

IplImage* pFrame=NULL;

IplImage* pSaveFrame=NULL;

CvCapture* pCapture=NULL;

static char filename[40];

struct tm * tm_ptr;

struct timeb tp;

int p[3];

p[0] = CV_IMWRITE_JPEG_QUALITY;

p[1] = 10;  //质量值

p[2] = 0;

//创建窗口

cvNamedWindow(“video”,1);

//打开摄像头

if( !(pCapture=cvCaptureFromCAM(-1)) ) //此处值为-1表示自动搜索到的第一个摄象头,而0则表示第一个,1则表示第2个,以此类推。

{

fprintf(stderr,”Can not open camera.\n”);

return -1;

}

if(mkdir(“./Alert”,0755)==-1)

{

//创建时存在该目录会返回错误码,如不存在则创建它,但由于我们需要该目录,则出错也不处理

}

//逐帧读取视频

while(pFrame=cvQueryFrame(pCapture))

{

cvShowImage(“video”,pFrame);

if(cvWaitKey(2)>=0) break;

pSaveFrame=cvCreateImage(cvSize(320,240),pFrame->depth,pFrame->nChannels);

//get file name

ftime(&tp);

tm_ptr=localtime(&tp.time);

snprintf(filename, 40,

“./Alert/%04d%02d%02d%02d%02d%02d%04d.jpg”,tm_ptr->tm_year-100+2000,

tm_ptr->tm_mon + 1, tm_ptr->tm_mday,

tm_ptr->tm_hour,tm_ptr->tm_min, tm_ptr->tm_sec,tp.millitm);

cvResize(pFrame,pSaveFrame,CV_INTER_LINEAR);

cvSaveImage(filename,pSaveFrame,p);

cvReleaseImage(&pSaveFrame);

}

cvDestroyWindow(“video”);

cvReleaseCapture(&pCapture);

return 0;

}

在大学的时候,由于项目需要,将OpenCV移植到S3C2440的开发板上,下面是之前移植过程和碰到的问题解决过程:

首先,从http://www.opencv.org.cn下载1.0的源码包,然后解压出来,进入解压后的目录,再进行下面的修改:

将configure 文件下列内容注释掉(有两处),只保留GTK_CFLAGS=”” 、GTK_LIBS=”” 、have_gtk=no 三项内容(如下黑体所示);

# if test “$PKG_CONFIG” = “no” ; then

# echo “*** The pkg-config script could not be found. Make sure it is”

# echo “*** in your path, or set the PKG_CONFIG environment variable”

# echo “*** to the full path to pkg-config.”

# echo “*** Or see http://www.freedesktop.org/software/pkgconfig to get pkgconfig.”

# else

# PKG_CONFIG_MIN_VERSION=0.9.0

# if $PKG_CONFIG –atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then

# echo “$as_me:$LINENO: checking for \”gtk+-2.0 gdk-pixbuf-2.0\”” >&5

echo $ECHO_N “checking for \”gtk+-2.0 gdk-pixbuf-2.0\”… $ECHO_C” >&6

# if $PKG_CONFIG –exists “”gtk+-2.0 gdk-pixbuf-2.0″” ; then

# echo “$as_me:$LINENO: result: yes” >&5

#echo “${ECHO_T}yes” >&6

# succeeded=yes

# echo “$as_me:$LINENO: checking GTK_CFLAGS” >&5

#echo $ECHO_N “checking GTK_CFLAGS… $ECHO_C” >&6

# GTK_CFLAGS=`$PKG_CONFIG –cflags “”gtk+-2.0 gdk-pixbuf-2.0″”`

# echo “$as_me:$LINENO: result: $GTK_CFLAGS” >&5

#echo “${ECHO_T}$GTK_CFLAGS” >&6

#

# echo “$as_me:$LINENO: checking GTK_LIBS” >&5

#echo $ECHO_N “checking GTK_LIBS… $ECHO_C” >&6

# GTK_LIBS=`$PKG_CONFIG –libs “”gtk+-2.0 gdk-pixbuf-2.0″”`

# echo “$as_me:$LINENO: result: $GTK_LIBS” >&5

#echo “${ECHO_T}$GTK_LIBS” >&6

# else

GTK_CFLAGS=””

GTK_LIBS=””## If we have a custom action on failure, don’t print errors, but

## do set a variable so people can do so.

# GTK_PKG_ERRORS=`$PKG_CONFIG –errors-to-stdout –print-errors “”gtk+-

2.0 gdk-pixbuf-2.0″”`

# fi

# else

# echo “*** Your version of pkg-config is too old. You need version

#$PKG_CONFIG_MIN_VERSION or newer.”

# echo “*** See http://www.freedesktop.org/software/pkgconfig“

# fi

# fi

# if test $succeeded = yes; then

# have_gtk=yes

#cat >>confdefs.h <

##define HAVE_GTK

#_ACEOF

# else

have_gtk=no

# fi

修改完后进行下面的操作:

安装好交叉编译工具链后再进行如下操作:

./configure –host=arm-linux –prefix=/home/guochongxin/opencv-arm2/

–without-gtk –without-carbon –without-v4l –without-quicktime

–without-1394libs –without-ffmpeg –without-python –without-swig

在命令行里面加入了–without-v4l,因为编译时会出错,还有我暂时不用到v4l,如果你要做摄相头方面的应用,就需要去掉该参数,但编译时会出错,这个问题我也在改进中,有解决方法就会发出来共享.

上面的配置没有把libjpeg编译进去,也不会添加v4l,而配置修改为:

./configure –host=arm-linux –prefix=/home/guochongxin/opencv-arm

–without-gtk –without-carbon –without-quicktime –without-1394libs

–without-ffmpeg –without-python –without-swig  CXX=arm-linux-g++

CPPFLAGS=-I/home/guochongxin/crosstool/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/include

CFLAGS=-I/home/guochongxin/crosstool/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/include

LDFLAGS=-L/home/guochongxin/crosstool/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib

则在编译到v4l时没有错误提示,也把libjpeg编译进去,因为把libjpeg的路径也通过配置设置进去了,注意libjpeg之前要交叉编译才可以,也注意上面的路径,注意libjpeg库要放到交叉编译工具链的库中.

接下来进行下面的操作:

make

make install

这里会在/home/guochongxin/opencv-arm2/目录下安装编译成功的文件,接下来如果需要编译代码,则需要设置如下的环境变量:

export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/home/guochongxin/opencv-arm2/lib/pkgconfig/

编译程序的方法是:

arm-linux-g++ `pkg-config –cflags –libs opencv` source.cpp -o destination

注意上面两个黑点是键盘上左上角波浪号在按下Shift键后输入的,而不是上引号,要区分开来.

上面步骤只是成功后发布出来,可能有小部分有问题,请根据实际情况修改,仅供参考,用到的交叉编译工具链是3.4.5版本的,制作过程在前面的博文有发表出来.

参考资料:《OpenCV 在Liod 开发板的移植及其应用》(华东师范大学电子系嵌入式竞赛组)

opencv4android 配置,配置OpenCV4Android开发环境相关推荐

  1. 如何配置能使j2me开发环境处于正常状态

    很多人在开始学习j2me的时候遇到的第一个问题就是如何配置j2me的开发环境,我一般用的是eclipse开发,所以在这里说一下在eclipse中如何配置j2me的开发环境: 1.首先需要了解在配置前要 ...

  2. windows 下配置 react native 开发环境

    windows 下配置 react native 开发环境 安装nvm 由于react native 需要使用 NodeJs 4.0以上版本,为了方便切换NodeJs,首先我们需要安装nvm. 你可以 ...

  3. C++:Windows环境下基于Eclipse配置C/C++开发环境

    C++:Windows环境下基于Eclipse配置C/C++开发环境 目录 Windows下的MinGW下载.安装和配置 1.MinGW下载 2.MinGW安装与配置 3.基于Eclipse配置 Wi ...

  4. 配置windows驱动开发环境

    配置windows驱动开发环境                    撰写:jiftle 时间:2011-09-09 14:30                     windows驱动开发需要wd ...

  5. 如何使用docker配置深度学习开发环境

    文章目录 1.底层驱动的安装 1.1 操作系统的安装 1.2 显卡驱动的安装 1.3 cuda的安装 2.使用docker配置深度学习开发环境 2.1 docker的安装 2.2 nvidia_doc ...

  6. myeclipse怎么运行c语言,windows下MyEclipse安装配置C/C++开发环境

    windows下MyEclipse安装配置C/C++开发环境 ,安装MinGW:假设安装路径为c:\MinGW 编辑如下系统变量: 变量名变量值 PATH C:\MinGW\bin; LIBRARY_ ...

  7. 软件_手把手教vscode配置c++,python开发环境

    原创:软件_手把手教vscode配置c++,python开发环境 之前主用Python作为项目开发语言,将项目迁移到arm边缘盒子上后发现arm的cpu不给力,软件速度低于预期,所以计划将部分程序改为 ...

  8. yum安装ruby_CentOS 7下配置Ruby语言开发环境的方法教程

    本文跟大家分享的是在CentOS 7下配置Ruby语言开发环境的方法教程,分享出来供大家参考学习,下面来看看详细的介绍: 安装Ruby 2.2 CentOS7存储库中的Ruby版本为2.0,但如果需要 ...

  9. Eclipse+CDT+MinGW 配置 C/C++ 开发环境

    Eclipse+CDT+MinGW 配置 C/C++ 开发环境 开场白:谨以此文献给所有喜欢探索和热爱开源软件的朋友们. 1:首先你得有 JAVA运行环境,这样你才可以运行eclipse ,你可以到h ...

  10. hadoop配置eclipse的开发环境

    hadoop配置eclipse的开发环境 一.前言 由于大三学习需要,而且网上的教程都有点模糊,导致我走了不少弯路,因此我写下这篇博客,本文仅供参考,如果有不足之处,还望指出. 二.安装eclipse ...

最新文章

  1. 没错,老板让我写个 BUG!
  2. Ucloud 文件上传
  3. VTK:PolyData之LinearExtrusion
  4. 集群环境下的Session共享
  5. ajax异步通讯 遮罩滚动栏,防止并发及误操作
  6. 有关日志打印的几点经验
  7. new JSONArray(ListMap).tostring()问题
  8. Restoring Permutation CodeForces - 1315C(思维)
  9. 查看zookeeper注册了哪些服务
  10. Jupyter运行GitHub里的MXNet源代码
  11. 一句话的设计模式(JAVA版)
  12. HTML draggable 属性
  13. Android模拟滑块验证,[Android实例] 拖动滑块进行图片拼合验证方式的实现
  14. DRM-widevine 总结
  15. debug-programe
  16. win10中鼠标点右键或者重命名文件夹系统卡顿解决方法
  17. 消除“星期一综合症”--- 大前研一的周末时间分配术
  18. 若依前后端分离项目图片上传后访问404问题
  19. echarts饼图中间默认内容显示与data数据显示切换
  20. 生活随记-如何健康摄入果糖

热门文章

  1. 在自己电脑上编写的项目如何让别人也能访问(内网穿透)?
  2. 第十八天2019.8.22
  3. 第二十三讲 狄拉克函数(冲激函数)
  4. 简单代码实现MQTT客户端功能
  5. Android搭建简单的socket服务器——基于TCP
  6. 生成树协议STP PVST
  7. FPGA — BRAM 队列实践
  8. MVC和MVVM有什么区别
  9. CES上TWS耳机大爆发:手机厂商和耳机厂商正戴着镣铐斗舞
  10. CEBR-160L-T17A、CEBR-320L-T19A螺纹插式比例减压阀放大器