javacv1.2调用,eclipse重新生成jar包
最近需要将opencv转到java环境下运行,故想到了用javacv来实现(boofcv仍在调试中,下篇介绍),
本文主要介绍javacv包的重新编译和调用。
1.为什么要重新编译生成jar包?
(1)在网上下载的javacv1.2是源码,需要重新jar包来实现相应的调用功能呢!
(2)网上下载的jar包不能正确调用,会出现无法找到调用函数的原因(网上给出的原因是环境配置不对,
但尝试多种方法仍无解,所以放弃……)
2.如何编译:
(1)导入:因为源码包中都存在pom.xml,所以eclipse中file-->import
之后就是
finish就可以啦!
(2)重新编译打包
工程右键-->run as -->maven build(此步很关键)
其中workspace直接加载源码位置就好,goals设置为package;Profiles设置为local
此步很慢需要等一会儿
需要联网操作,因为会下载很多东西
这样我们就可以获得想要的jar包啦,下边我们调用自己生成的jar包。
自己打包会生成四个jar包
opencv.jar、opencv-windows-x86_64.jar、javacv1.2.jar、javacpp.jar
可以新建一个java project ,并在相应的路径下新建libs文件夹,将上述可能的jar包复制到libs文件夹中之后将jar包加载进来(记得先刷新下工程,按F5 就好),选中工程右键-->build path-->configure build path-->add jars,选择相应的jar包就可以,加载后会出现
之后可以添加自己函数进行实验或者应用啦
import org.bytedeco.javacv.CanvasFrame;
import org.bytedeco.javacv.OpenCVFrameConverter;
import org.bytedeco.javacv.FrameGrabber.Exception;
import org.bytedeco.javacv.OpenCVFrameGrabber;
public class JavavcCameraTest
{
public static void main(String[] args) throws Exception, InterruptedException
{
OpenCVFrameGrabber grabber = new OpenCVFrameGrabber(0);
grabber.start(); //开始获取摄像头数据
CanvasFrame canvas = new CanvasFrame("摄像头");//新建一个窗口
canvas.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
canvas.setAlwaysOnTop(true);
while(true)
{
if(!canvas.isDisplayable())
{
grabber.stop();
System.exit(2);
}
canvas.showImage(grabber.grab());//获取摄像头图像并放到窗口上显示
Thread.sleep(50);//0.05秒刷新一次图像
}
}
}
验证可以正常调用本机摄像头。
存在问题:javacv1.2调用的是opencv3.1我们在网上找到的例子多数都是先前版本,就存在opencv2到opencv3系列的更新问题,比如Iplimage,Mat替代问题等等,还有很多工作要做,如果适应于opencv3编写代码则不存在上述问题,好好学习……