嗨,大家好我正在嘗試使用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