【发布时间】: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