如何存储凸轮图像?

时间:2014-10-25 07:59:14

标签: opencv video processing video-capture imagefilter

我刚开始使用processing.js。

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

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

  • 从处理.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

1 个答案:

答案 0 :(得分:0)

不确定你想做什么,我确定你已经解决了,但这对任何人都有用......

您似乎可以直接编写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");