嗨,大家好我正在尝试使用JavaCV,因为我想了解它是如何工作的,以便将它的功能包含在我记住的项目中。我已经下载并设置OpenCV,就像指示说的那样,我也下载了bytedeco这个JavaCV 1.0 jar包,我需要在我的项目中包含这些jar包。关于JavaCV示例的问题
我已经开始使用我在网上找到的一个示例程序,该程序基本上可以抓取并保存摄像头中的图像。我写的代码如下:
import org.bytedeco.javacpp.opencv_core.IplImage;
import org.bytedeco.javacv.CanvasFrame;
import org.bytedeco.javacv.Frame;
import org.bytedeco.javacv.FrameGrabber;
import org.bytedeco.javacv.VideoInputFrameGrabber;
import org.bytedeco.javacv.*;
import org.bytedeco.javacpp.*;
import static org.bytedeco.javacpp.opencv_core.*;
import static org.bytedeco.javacpp.opencv_imgproc.*;
import static org.bytedeco.javacpp.opencv_imgcodecs.*;
public class GrabberShow implements Runnable{
IplImage image;
CanvasFrame canvas = new CanvasFrame("Web Cam");
public GrabberShow(){
canvas.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
}
public void run(){
FrameGrabber grabber = new VideoInputFrameGrabber(0);
int i = 0;
try{
grabber.start();
IplImage img;
while(true){
img = grabber.grab();
if(img != null){
cvFlip(img, img, 1);
cvSaveImage((i++) + "-aa.img", img);
canvas.showImage(img);
}
}
}catch(Exception e){
e.printStackTrace();
}
}
public static void main(String[] args){
GrabberShow gs = new GrabberShow();
Thread th = new Thread(gs);
th.start();
}
}
这是一个非常直接和简单的例子。我遇到的问题可在以下行中找到:
img = grabber.grab();
和
canvas.showImage(img);
我所面临的问题是一个类型不匹配“不能从帧转换为opencv_core.LplImage”。
我尝试过在线搜索,但无法找到有关此问题的良好答案。我所发现的仅仅是同一个例子。有没有人对此有任何想法?
需要强调的是,这是我第一次在Java中使用openCV。我过去曾经使用它来制作和实现对象跟踪程序,但是这是通过原生openCV和使用Python完成的。
你应该使用官方的[OpenCV的Java包装(http://docs.opencv.org/doc/tutorials/introduction/desktop_java/java_dev_intro.html),不JavaCV。 – Miki
我已经读过使用JavaCV并不差,因为本教程使用的是JavaCV,所以我决定采用这种方式。为什么我应该使用OpenCV呢? – Aris
因为它是官方的,因此保持良好。还有很多教程,例子等......但你的选择:D – Miki