【问题标题】:How to store image from cam?如何存储来自cam的图像?
【发布时间】:2014-10-25 07:59:14
【问题描述】:

我刚刚开始使用 processing.js。

我的程序的目标是熟练的图像过滤器(opencv)到视频帧。

所以我想(但是我发现它不能以这种方式工作:

  • 从 processing.video 包中的 Capture 对象获取视频流。
  • 存储当前图像(希望可以存储为 PImage 对象)。
  • 熟练的 OpenCV 图像过滤器
  • 使用过滤后的 PImage 对象调用图像方法。

我知道如何从 cam 获取视频流,但不知道如何存储。

import processing.video.*;
import gab.opencv.*;

Capture cap;
OpenCV opencv;

public void setup(){
  //size(800, 600);
  size(640, 480);
  colorMode(RGB, 255, 255, 255, 100);

  cap = new Capture(this, width, height);
  opencv = new OpenCV(this, cap);
  cap.start();
  background(0);
}

public void draw(){
  if(cap.available()){
    //return void 
    cap.read();
  }

  image(cap, 0, 0);
}

此代码获取视频流并显示其获取的内容。但是,我无法存储单帧,因为 Capture.read() 返回“void”。

在存储当前帧之后,我想用 OpenCV 转换 PImage ,例如:

 PImage gray = opencv.getSnapshot();

  opencv.threshold(80);
  thresh = opencv.getSnapshot();

  opencv.loadImage(gray);
  opencv.blur(12);  
  blur = opencv.getSnapshot();

  opencv.loadImage(gray);
  opencv.adaptiveThreshold(591, 1);
  adaptive = opencv.getSnapshot();

有什么不错的方法来存储和转换当前帧吗? (我想我的方式 - 这意味着在保存当前图像和转换后显示帧 - 使用大量资源取决于帧速率)

感谢您的回答:D

【问题讨论】:

  • 顺便说一句:processing.js 是使用 opencv 的一种非常糟糕的方式,它们的绑定自 200x 以来从未更新过,并且仅涵盖了 opencv 约 5% 的功能。
  • @berak 感谢您的建议。我还发现 processingjs 的例子并不多(主要与 C++ 代码一起使用)。但是我必须通过处理来解决这个问题,因为我现在不太了解 C++。有没有在不使用 openCV 的情况下实现这些规范?
  • opencv 带有 java 和 python 绑定,如果有帮助吗?
  • @berak 没有。我应该使用处理 js 有一个限制。无论如何,感谢您提供解决问题的新线索:D

标签: opencv video processing video-capture imagefilter


【解决方案1】:

不确定你想做什么,我确定你已经解决了,但这对某人来说可能有用......

看来你可以直接写Capture对象的名字,它会返回一个PImage:

 cap = new Capture(this, width, height);

//Code starting and reading capture in here

PImage snapshot = cap;
//Then you can do whatever you wanted to do with the PImage
snapshot.save("snapshot.jpg");
//Actually this seems to work fine too
cap.save("snapshot.jpg");

【讨论】:

    【解决方案2】:

    使用opencv.loadImage(cap)。例如:

    if (cap.available() == true) {
        cap.read();
    }  
    
    opencv.loadImage(cap);
    opencv.blur(15);
    
    image(opencv.getSnapshot(), 0, 0);
    

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 2022-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-18
      • 1970-01-01
      相关资源
      最近更新 更多