短版本:我的抓地器没有开始
我正在使用Netbeans 8.0、javacv和javacv。
我的问题是,我在两个摄像头之间切换。一个是我的机器人,我用“IPCameraFrameGrabber(”.)访问它。这个部分工作得很好,但为了调试(和移动),我想用笔记本摄像头测试代码(OpenCVFrameGrabber(0)或(-1)...testet,结果相同)。然而,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();
}
}
}当我运行代码,它打印“凸轮检查”,摄像机开始发光,但在接下来的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)所以对我来说问题是“抓取不了”开始,但直到现在我还不能开始。也许我的假设在general...Can中是错误的,有人帮我做这件事吗?如前所述,IPCameraFrameGrabber(机器人-ip)与完全相同的代码工作良好。
如果您需要进一步的信息,请告诉我。
我为我的英语感到抱歉,但是非常感谢你的帮助!
发布于 2014-09-30 13:36:47
我想这是个摄像机问题。在另一台笔记本电脑上,我的代码工作得很好,但是如果有人有提示,我怎样才能让我的相机恢复工作,那就太好了!
这是联想64位,win8.1的集成摄像头,问题是:如果启动(适当的程序代码或像skype这样的程序),绿灯会发光,但没有出现图像。我已经尝试了联想的设置(摄像头不是私人的),新的驱动程序,去和重新安装。
我并不是真的期待这个问题的答案,但是如果有人碰巧有这个问题,并有一个解决办法,请告诉我!它可以给我一些时间:)
发布于 2015-03-16 20:03:49
试试这个:
CvCapture capture = cvCreateCameraCapture(CV_CAP_ANY);
IplImage frame= cvQueryFrame(capture);
cvNamedWindow("Video",CV_WINDOW_AUTOSIZE);
char c = 0;
while( c!=27 && frame!=null;) {
frame= cvQueryFrame(capture);
cvShowImage("Video", frame);
c= (char )cvWaitKey(30);
}
cvReleaseCapture(capture);
cvDestroyWindow("Video");https://stackoverflow.com/questions/26104756
复制相似问题