javacv从0.8开始,就发生了重大变化,不再需要指定本地原生库,直接把opencv的代码编译后融合到了jar包里面。
这样做的好处是,配置简单,只引入jar包,就可以正常工作了。
javacv1.1配置如下
以linux-x86_64环境为例说明。
1、下载所需要的jar包
可以到官网下载 http://bytedeco.org。速度可能较慢,这里提供一下csdn上的下载地址:
linux-x86_64 http://download.csdn.net/detail/qiao_198911/9475875
linux-x86 http://download.csdn.net/detail/qiao_198911/9475880
windows-x86 http://download.csdn.net/detail/qiao_198911/9475913
windows-x86_64 http://download.csdn.net/detail/qiao_198911/9475883
mac-x86_64 http://download.csdn.net/detail/qiao_198911/9475887
android-x86 http://download.csdn.net/detail/qiao_198911/9475905
android-arm http://download.csdn.net/detail/qiao_198911/9475900
2、新建java工程,加入依赖包
新建java工程javacv1.1,如图
新建lib文件夹,从下载的jar包中,复制4个到lib中,javacpp.jar、javacv.jar、opencv.jar、opencv-linux-x86_64.jar
在jar上右键,添加到编译路径。添加之后如图
测试代码
package com.linghushaoxia.javacv;
import static org.bytedeco.javacpp.opencv_highgui.*;
import static org.bytedeco.javacpp.opencv_imgcodecs.*;
import org.bytedeco.javacpp.opencv_core.Mat;
/**功能说明:javacv1.1环境搭建
* @author:linghushaoxia
* @time:2016年3月26日下午2:53:08
* @version:1.0
*
*/
public class ImageShow {
public static void main(String[] args) {
//读取图像
String imagePath = "file/lotus.png";
Mat img = imread(imagePath);
if(img!=null){
imshow("javacv1.1", img);
waitKey();
}else {
System.out.println("无法加载图像");
}
}
}
测试效果:
是不是很简单?只需要四个jar包,就可以了。如果,需要其他功能,加入其余jar包即可。
加入的时候,要注意jar包分为两类,
一类是如javacpp.jar、javacv.jar、opencv.jar,没有跟具体的硬件平台,这一类是纯java代码生成的,在任何平台上都一样
另一类是opencv-linux-x86_64.jar,命名包含具体平台的,这一类包含了本地平台相关的库封装,是包含c++编译成的适合某一个平台的本地代码的。
通常是是配对的,需要把这两个都加入到编译路径。