虽然是我转的,但是我是按照这种方式配置成功了。
我的是win7-32位系统,
Java版本:jdk1.6.0_33
Eclipse版本:
Eclipse Java EE IDE for Web Developers.
Version: Helios Service Release 2
Build id: 20110218-0911
Visual Studio版本: 2010旗舰版
1. 下载opencv(我用的版本是2.4.6.0)
2. 双击opencv.x.x.exe安装,其实就是解压过程(注意:一定要把它解压到C盘根目录下,否则eclipse配置javacv的时候会失败)
3. 然后在高级设置里面设置环境变量添加path:
C:\opencv\build\x86\vc10\bin;C:\opencv\build\java\x86;
(第一个是为了vs2010设置的,第二个是为了eclipse设置的)
4. 可以先在vs2010上测试opencv:
新建工程-》打开属性管理器-》双击Debug|Win32下的Microsoft.Cpp.Win32.user-》VC++目录:
(1) 在包含目录里面添加:
C:\opencv\build\include;C:\opencv\build\include\opencv;C:\opencv\build\include\opencv2;
(2) 在库目录里添加:
C:\opencv\build\x86\vc10\lib;
库目录这里其实可以具体到highgui、core等库的。这样就不用在程序前面添加:
#pragma comment(lib, "opencv_core246d.lib")
#pragma comment(lib, "opencv_highgui246d.lib")
用下面的代码来测试,图片可以随意用一张就行:
#include <cv.h>
#include <core\core.hpp>
#include <highgui\highgui.hpp>
#pragma comment(lib, "opencv_core246d.lib")
#pragma comment(lib, "opencv_highgui246d.lib")
using namespace
int
{//cvtColor(frame,gray,CV_BGR2GRAY);
"show image", WINDOW_AUTOSIZE);
"opencv.png");
while(1)
{
"show image", src);
if
return
}
return
}
运行结果显示图片,测试成功。
5. 然后开始配置eclipse的javacv:
a) 下载javacv-0.6-bin.zip,注意我的是0.6版本。解压,可看到文件目录:
b) 在eclipse下新建一个JavaProject:TestJavacv(这里名字随便取了)
c) 在TestJavacv下面新建文件目录libs/armeabi,建好之后,文件目录如下图所示
d) 将javacv-0.6-bin.zip解压后得到的所有的jar文件拷贝到libs文件的根目录下,注意:不是armeabi目录。(其实像macosx、linux几个jar可以不用拷贝过去的)
e) 右键刷新下TestJavacv项目,然后使用右键TestJavacv ->Build Path->Configure Build Path,在里面AddJARS,把刚才拷贝过来的所有jar包都加入到项目中。
f) 刚刚javacv-0.6-bin.zip解压后得到的目录里面会有javacv-android-arm.jar这个文件,
接着,下载javacv-0.6-cppjars.zip,解压(注意是0.6版本),
可以看到解压文件目录里面有opencv-2.4.6.1-android-arm.jar文件,以及ffmpeg-2.0.1-android-arm.jar。
再把这3个jar解压,把它们里面所有*.so文件直接拷贝到刚创建的“libs/armeabi”文件夹中。
g) 这样javacv就配置好了
h) 测试代码(先在D盘根目录下放lena.jpg图片):
import static com.googlecode.javacv.cpp.opencv_core.*;
import static com.googlecode.javacv.cpp.opencv_imgproc.*;
import static com.googlecode.javacv.cpp.opencv_highgui.*;
public class Smoother {
public static void smooth(String filename){
IplImage image = null;
image=cvLoadImage(filename);
if(image!=null){
cvSmooth(image,image,CV_GAUSSIAN,3);
cvSaveImage("D:\\new-lena.jpg",image);
cvReleaseImage(image);
}
}
public static void main(String args[]){
smooth("D:\\lena.jpg");
}
}
运行成功。配置完成。
这是在我本人机器上测试,一步步亲自来的,绝非网上拷贝的。
只要步骤、版本正常,都没问题。
常见问题:
Error1:
程序报异常:no jniopencv_core injava.library.path
原因:
可能是jar包只拷贝了javacpp.jar和javacv.jar到libs目录下,只要将所有的jar包都拷过去就没问题了,今天在这个上面栽了很久的,主要是被文献误导了,老外的文献里面说只要拷两个的,如下图所示
还有就是,一定要记得*.so文件啊!!!具体看前面的步骤。
Error 2.
程序报异常:Java.lang.UnsatisfiedLinkError:can'tfind opencv_core245.dll
这个应该是JavaCV的版本和OpenCV的版本问题了,最好一致,比如:
opencv 2.4.5 + javacv0.5
或者opencv 2.4.6 + javacv0.6(这是我本人用的)
另外,还有一个最大的遗憾,JavaCV目前不支持中文,所以大家的图片或者路径名中最好不要包括中文
还有一种使用javacv的方法:
配置很简单,但是这种是通过java的风格来弄的,和opencv原来的api差很远。用起来困难