gpt4 book ai didi

opencv - 使用JavaCV显示摄像机的实时图像

转载 作者:行者123 更新时间:2023-12-02 16:42:21 25 4
gpt4 key购买 nike

我正在使用JavaCV从网络摄像头进行即时图像处理。效果很好!我可以在图片中定义一个感兴趣的区域,并在显示之前裁剪每张图像,并且仍然可以每秒完成30帧的播放,而不会出现问题。真好!

但是,我正在使用CanvasFrame对象显示实时图像。它很好用(很容易),但是包含在应用程序中完全没有用。我想将实时图像作为应用程序窗口的一个元素放在面板(或 Canvas 等)上。

问题:CanvasFrame驻留在其自己的框架中,并且当窗口获得焦点时消失在窗口后面,而当我移动窗口时也不会移动。

如何将实时图像放置到可以与常规UI元素集成的元素上?

同样,我需要在JavaCV中替换CanvasFrame。 TIA。

最佳答案

我启动一个相机线程,该线程捕捉到一个循环中并在CanvasFrame上进行绘制,直到按下UI按钮为止。这很不错。

作为对UI按钮按下的响应,我停止了线程(这会触发grabber.stop)。然后,我拍摄最后一张图像,并将其显示在面板上。这很不错(谢谢,我知道如何显示图像)。除了CanvasFrame是一个单独的窗口,我会做的很烂。

因此,我想启动一个摄像头线程,该线程捕获一个循环并且不绘制在CanvasFrame上。相反,它只是保留最后一张图像的内部副本。然后要显示在我的UI上,我设置了一个计时器(可以正确触发),并仅在面板上显示最新图像。这不起作用-面板保持空白。但是,这种情况与有效情况有何不同?唯一的区别是相机线程中的采集卡尚未停止。相机不在抓取循环中时很好,但在循环时不显示。而且我非常小心地制作传递给UI的图像的cvCopy,因此内存争用没有问题。

我还要说,在CanvasFrame上循环显示似乎触发了我的Logitech C92 0 auto 对焦,而仅抓取一张图像并显示它(只要抓取器停止就可以轻松完成)似乎不会自动-焦点。

结果是,CanvasFrame似乎在backgraound中做了很多棘手的事情,而仅仅具有grabber.start,grabber.grab,grabber.stop,然后在自己的面板上显示是无法匹配的。

萨姆,我在CanvasFrame源代码中看到了您的名字,所以您应该比任何人都清楚我的两种情况之间的区别。

关于opencv - 使用JavaCV显示摄像机的实时图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14025380/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com