我刚开始使用processing.js。
我的程序的目标是熟练的图像过滤器(opencv)到视频帧。
所以我想(但是我发现它不能以这种方式工作:<):
我发现了如何从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
答案 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");