OpenCV4Android开发之旅(一)----OpenCV2.4简介及 app通过Java接口调用OpenCV的示例 里 记录了使用OpenCV4Android安装后,在Android开发中通过java接口调用OpenCV。但遗憾的是,里面提供的接口真心太少了。通过JNI调OpenCV见这里http://blog.csdn.net/yanzi1225627/article/details/8525720。 这里有个问题澄清下,无论是通过Java接口调还是通过JNI调C++的OpenCV,都是调的你安装的OpenCV4Android的内容,这一点从JNI调OpenCV的搭建过程中可以看到,里面有个mk文件最终编译的还是你解压缩出来的OpenCV4Android(OpenCV2.3的时候还不叫OpenCv4Android,反正就是Android平台的OpenCV)中的东西。但是用JNI调试十分不方便,为此,一个复杂的算法我们需要首先在纯C或纯C++环境下测试验证通过,然后再到JNI里封装接口。为此,需安装C++接口的OpenCV,也就是传统的OpenCV。
官方的OpenCV2.4.4给出了VS做开发IDE的配置方法和MinGW。杂家喜欢在一个IDE里搞,既然android在eclipse里搞了就索性都在这上开发。前提是配置好CDT和Cygwin,能够正常运行C++的Helloworld。鉴于OpenCV2.4.4在windows上安装配置非常麻烦,我装的OpenCV2.0,步骤如下:
1、解压缩 D:\ProgramFile\OpenCV2.0
2、新建一个C++ HelloWorld工程,然后右键项目--属性---C/C++ Build--------Settings,找到右边的Cygwin C++ Compiler,点Includes,输入路径:D:\ProgramFile\OpenCV2.0\include\opencv
3,在右下的Cygwin C++ Linker----------Libraries,依次添加Libraries:
libcv200libcvaux200 libcxcore200 libcxts200 libhighgui200 libml200
在搜索路径里添加:D:\ProgramFile\OpenCV2.0\lib 示图如下:
经过这三部就Ok了!输入下面的测试代码:
#include <highgui.h>
int main(){
IplImage* pImg = cvLoadImage(“F:\\1.jpg”);
cvNamedWindow("Sr", 1);
cvShowImage("Sr", pImg);
cvWaitKey(0);
cvDestroyWindow("Sr");
cvReleaseImage(&pImg);
return 0;
}
1、F盘下的东西一定要写F:\\ 写成F:\是找不到文件的
2、不管是jpeg文件还是jpg文件后缀都写成jpg,写成jpeg后缀名同样会加载不进来图片
编译后一切正常,但是运行的时候会直接报错,errors显示:
Description Resource Path Location Type
make: *** multiple target patterns. Stop. tEST1.d /tEST1/Debug/src line 1 C/C++ Problem
就是这个蛋疼的make: *** multiple target patterns. Stop.问题害我找了n久,问题在哪呢?原来一般在配置cygwin的时候,在window--preferences--C/C++-------Debug--------Source Lookup Path都要新建一个path mapping,即将/cygdrive/d/映射程D:\但遗憾的是,ADT Bundle提供的Eclipse里,你点确定后/cygdrive/d/自动变成\cygdrive\d\这也就是表示映射无效了!所以才会出现make: *** multiple target patterns这种问题。解决方法最简单的有两种:
1、归根结底这是Cygwin里的3.8.1的make,在编译的时候识别不了Windows下的:\,但是3.8.0的make却是可以识别的,所以可以下载这个make.exe,将其放在cygwin里的bin文件夹下覆盖掉以前的3.8.1即可。下载链接:http://download.csdn.net/detail/yanzi1225627/6616361
2、除上边方法外,选中项目点Alt+enter,在C/C++ Build的Tool Chain Editor里在Current Builder那一项选择CDT Internal Builder代替Gnu Make Builder,一切就好了。
参考:http://stackoverflow.com/questions/2401976/very-simple-application-fails-with-multiple-target-patterns-from-eclipse
------------------------本文系原创,转载请注明作者yanzi1225627,欢迎大家加入OpenCV4Android开发联盟群:66320324,备注yanzi