此刻,我正在处理识别表格。它与我的电脑摄像头完美搭配,但现在我想用网络上的摄像头进行测试。我使用 JavaCV(OpenCV 适用于 Java)。
这是我的代码:
public static void main(String[] args) throws Exception {
OpenCVFrameGrabber grabber = new OpenCVFrameGrabber("http://192.168.1.210:5500/snapshot.cgi?user=admin&pwd=123456");
grabber.setFormat("mjpeg");
grabber.start();
for (int k=0; k<20000; k++){
System.out.print(k);
}
IplImage frame = grabber.grab();
CanvasFrame canvasFrame = new CanvasFrame("Camera");
canvasFrame.setCanvasSize(frame.width(), frame.height());
while (canvasFrame.isVisible() && (frame = grabber.grab()) != null) {
canvasFrame.showImage(frame);
}
grabber.stop();
canvasFrame.dispose();
System.exit(0);
}
我有一个错误,但我不明白。
线程“主”com.googlecode.javacv.FrameGrabber$Exception 中的异常:cvCreateFileCapture() 错误:无法创建相机捕获。在 com.googlecode.javacv.OpenCVFrameGrabber.start(OpenCVFrameGrabber.java:171) 在 Test.FrameRecorderTest.main(FrameRecorderTest.java:12) 警告:找不到编解码器参数 (../../modules/highgui/src/ cap_ffmpeg_impl.hpp:375)
一开始我以为这是我拍摄相机照片的地址,但我在 Mozilla/IE 中进行了测试,我可以得到图像。所以我认为地址还可以。如果我通过视频更改地址也没关系。我想...也许是因为我用相机拍照而不是视频...我想...如果是这样我可以在视频和图片之间进行选择吗?
更新:我现在改变了我的方法,现在没关系。我认为这是因为我拍了一张带有视频代码的照片。
package Test;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import javax.imageio.ImageIO;
import com.googlecode.javacv.CanvasFrame;
public class TestconnectionCamera {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
CanvasFrame CamWindow = new CanvasFrame("Camera");
String Cam1Jpeg_url = "http://192.168.1.210:5500/snapshot.cgi?user=admin&pwd=123456";
URL url = new URL(Cam1Jpeg_url);
while(true){
InputStream is = url.openStream();
BufferedImage image = ImageIO.read(is);
CamWindow.showImage(image);
is.close();
}
}
}