короткая версия: мой граббер не запускается
Я использую Netbeans IDE 8.0, Java JDK и javacv.
Моя проблема в том, что я переключаюсь между двумя камерами. Один от моего робота, и я получаю к нему доступ с помощью "IPCameraFrameGrabber("..."). Эта часть работает нормально, но в целях отладки (и мобильности) я хочу протестировать код с помощью камеры моего ноутбука. (OpenCVFrameGrabber(0) или (-1)... тестирует оба, тот же результат), но кажется, что grabber.start(); не запускается.
Я использую следующий код (упрощенный, но я думаю, что основы включены, не так ли?)
import com.googlecode.javacv.CanvasFrame;
import com.googlecode.javacv.FrameGrabber;
import com.googlecode.javacv.OpenCVFrameGrabber;
import com.googlecode.javacv.cpp.opencv_core;
import com.googlecode.javacv.cpp.opencv_core.IplImage;
import static com.googlecode.javacv.cpp.opencv_core.cvReleaseImage;
public class Simple_camera_test {
IplImage imgBin;
static IplImage imgGrab;
public static void main(String[] args) {
try{
OpenCVFrameGrabber grabber = new OpenCVFrameGrabber(0);
System.out.println("Cam check");
grabber.start();
System.out.println("grabber started");
imgGrab = grabber.grab();
CanvasFrame canvasFrame2 = new CanvasFrame("Cam2");
canvasFrame2.setCanvasSize(imgGrab.width(), imgGrab.height());
//canvasFrame2.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
grabber.setFrameRate(30);
while ((imgGrab = grabber.grab()) != null){
canvasFrame2.showImage(imgGrab);
cvReleaseImage(imgGrab);
}
grabber.stop();
canvasFrame2.dispose();
}catch (Exception e) {
e.printStackTrace();
}
}
}
Когда я запускаю код, он печатает «Cam check», и камера начинает светиться, но затем в течение следующих 2-3 минут ничего не происходит. после этого вывод:
run:
Cam check
(after 2-3 min pause - exception handling)
grabber started
com.googlecode.javacv.FrameGrabber$Exception: cvRetrieveFrame() Error: Could not retrieve frame. (Has start() been called?)
at com.googlecode.javacv.OpenCVFrameGrabber.grab(OpenCVFrameGrabber.java:236)
at simple_camera_test.Simple_camera_test.main(Simple_camera_test.java:29)
Так что для меня проблема в том, что "граббер не запускается", но до сих пор я не могу заставить его запуститься. Может быть, мое предположение неверно в целом... Может ли кто-нибудь помочь мне в этом вопросе? Как уже говорилось, IPCameraFrameGrabber(robot-ip) отлично работает с точно таким же кодом.
Если вам нужна дополнительная информация, пожалуйста, дайте мне знать.
Извините за мой английский, но большое спасибо за вашу помощь!