【发布时间】:2016-06-08 07:24:45
【问题描述】:
我正在尝试从网络摄像头获取输入并将其绘制在画布上。
为此,我编写了以下代码块:
void addImageToCanvas(Image img){
GraphicsContext gc = canvas.getGraphicsContext2D();
gc.drawImage(img, 0, 0, canvas.getWidth(), canvas.getHeight());
}
如果我只在该函数中手动传递一个图像,它就可以工作。
如果我通过了两个Images,那么它只会绘制最后一个。
但我正在实现线程并从线程中连续调用它。然后函数就到了就行了:
gc.drawImage(img, 0, 0, canvas.getWidth(), canvas.getHeight());
调用方法的代码部分:
public void run() {
try {
FrameGrabber grabber = new VideoInputFrameGrabber(cameraId);
CvMemStorage storage = CvMemStorage.create();
grabber.start();
IplImage grabbedImage;
BufferedImage bufImg;
int counter = 0;
while (primaryCameraChosen != null) {
grabbedImage = grabber.grab();
bufImg = grabbedImage.getBufferedImage();
addImageToCanvas(SwingFXUtils.toFXImage(bufImg, null));
try{
Thread.sleep(10000);
} catch(InterruptedException e){}
}
grabber.stop();
grabber.release();
} catch (Exception ex) {
}
}
你能告诉我我在这里做错了什么吗?解决办法是什么?谢谢。
【问题讨论】: