当前位置: 首页 > 面试题库 >

在Java中从网络摄像头捕获图像?

何涵衍
2023-03-14
问题内容

如何连续从摄像头捕获图像?

我想尝试对象识别(也许使用Java Media Framework)。

我当时正在考虑创建两个线程

一个线程:

  • 节点1:捕获实时图像
  • 节点2:将图片另存为“ 1.jpg”
  • 节点3:等待5秒
  • 节点4:重复…

其他线程:

  • 节点1:等到捕获图像
  • 节点2:使用“ 1.jpg”获取每个像素的颜色
  • 节点3:将数据保存在数组
  • 节点4:重复…

问题答案:

此JavaCV实现效果很好。

码:

import org.bytedeco.javacv.*;

import static org.bytedeco.javacpp.opencv_core.IplImage;
import static org.bytedeco.javacpp.opencv_core.cvFlip;
import static org.bytedeco.javacpp.opencv_imgcodecs.cvSaveImage;


/**
 * Created by gtiwari on 1/3/2017.
 */

public class Test implements Runnable {
    final int INTERVAL = 100;///you may use interval
    CanvasFrame canvas = new CanvasFrame("Web Cam");

    public Test() {
        canvas.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
    }

    public void run() {

        FrameGrabber grabber = new VideoInputFrameGrabber(0); // 1 for next camera
        OpenCVFrameConverter.ToIplImage converter = new OpenCVFrameConverter.ToIplImage();
        IplImage img;
        int i = 0;
        try {
            grabber.start();
            while (true) {
                Frame frame = grabber.grab();

                img = converter.convert(frame);

                //the grabbed frame will be flipped, re-flip to make it right
                cvFlip(img, img, 1);// l-r = 90_degrees_steps_anti_clockwise

                //save
                cvSaveImage((i++) + "-aa.jpg", img);

                canvas.showImage(converter.convert(img));

                Thread.sleep(INTERVAL);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        Test gs = new Test();
        Thread th = new Thread(gs);
        th.start();
    }
}

还有关于JavaCV的配置的文章

你可以修改代码,并能够定期保存图像并进行所需的其他处理。



 类似资料:
  • 问题内容: 我想从网络摄像头捕获单个图像并将其保存到磁盘。我想用Java或Python(最好是Java)做到这一点。我想要在64位Win7和32位Linux上都可以使用的东西。 编辑:我使用Python 3.x,而不是2.x 因为在其他地方我都看到这个问题,使人们设法感到困惑,所以我将明确说明一些事情: 我不想使用处理 除上述语言外,我不想使用任何其他语言 我确实想以任何方式,形状或形式在屏幕上显

  • 我正在开发一个简单的博客应用程序,允许用户将照片从手机图库和描述上传到Firebase服务器。我正在尝试修改我的当前项目,以允许用户从照相机捕获照片并将其上载到firebase服务器。 目前,我能够将我捕获的图像显示到Image按钮中,但是我无法将我的图像发布到Firebase服务器(提交发布按钮不会对我的点击功能做出反应)。 我怀疑我的startPosting()函数中有错误,或者我没有正确编码

  • 我正在开发一个web应用程序,它可以浏览和拍摄本地照片,我还想通过相机拍摄图像。我使用下面的代码,我可以捕捉设备摄像头。 现在,我想获得图像和onchangeevent,转换为base64,并希望在该页面中显示。 好心帮我伙计们!

  • OpenCV无法在Linux上打开超过8个网络摄像头的视频捕获。这里有一个简单的例子: 对于我的设置(OpenCV 2.4.11,Ubuntu 14.04),比如说,有9个网络摄像头,opencap。py在前8个摄像头(0-7个)中成功,但在最后一个摄像头中成功 注意:正确列出了9个网络摄像头(/dev/video0、/dev/video8)。

  • 问题内容: 我想获取Macbook的网络摄像头流(集成的iSight网络摄像头)。 我使用Java,但对Objective-C一无所知,因此我正在寻找“全Java”解决方案。我找到了一些示例,但它们是2005年制造的,无法在我的系统上使用。 问题答案: 我现在自己也遇到了同样的事情。我正在为项目使用VLCJ,它在Windows,Linux Mint,Linux Ubuntu和Mac OSX Lio

  • 我正在尝试用相机拍照并上传到Firebase。我使用AlertDialog询问用户是否想要使用相机或从图库中选择图像。我可以用相机拍照,但是当我试图上传图像时,它说找不到图像。 以下是我的图像选择方法: 下面是我上传图片的方法: 提前感谢任何帮助的朋友。