Processing 有没有办法在处理IDE时禁用预览窗口?

Processing 有没有办法在处理IDE时禁用预览窗口?,processing,processing-ide,Processing,Processing Ide,我正在使用Processing IDE为一个计算机视觉项目生成100个视频短片。现在,我正在使用Python创建一个.pde文件并运行它。这大致如下: PATH=“/my/local/director/” 变量列表=[1、2等] 对于变量列表\u中的i: naming=“p5{:02d}\u myfile”。格式(i) os.mkdir(路径+命名) 打开(路径+命名+“/”+命名+“.pde”,“w”)作为pde文件: 写入(“文件内容转到此处”+i”;\n”) pdefile.write(“

我正在使用Processing IDE为一个计算机视觉项目生成100个视频短片。现在,我正在使用Python创建一个
.pde
文件并运行它。这大致如下:

PATH=“/my/local/director/”
变量列表=[1、2等]
对于变量列表\u中的i:
naming=“p5{:02d}\u myfile”。格式(i)
os.mkdir(路径+命名)
打开(路径+命名+“/”+命名+“.pde”,“w”)作为pde文件:
写入(“文件内容转到此处”+i”;\n”)
pdefile.write(“saveFrame(\“frames/\”frames/“.tif\”);\n)
subprocess.Popen([“processing ide”,“--sketch=“+PATH+naming,”--run“],stdout=subprocess.DEVNULL)
subprocess.call([“ffmpeg”、“-i”、PATH+naming+“/frames/%06d.tif”、PATH+naming+“out.mp4”]、stdout=subprocess.DEVNULL)
rmtree(路径+命名+“/frames/”)
每次执行代码时,Processing IDE都会打开一个预览窗口来显示正在发生的事情。我是否可以在执行步骤或
.pde
文件创建中传递一个选项来阻止预览窗口显示。这需要很长时间,我希望这能加快速度


注意:是的,我已经考虑过有更好的选项来生成这些视频。回想起来,我本应该在Python中使用
OpenCV
来加快速度,但这不是这个问题的重点。

@KevinWorkman的建议很棒!如果你真的需要处理和无头,那就是前进的方向

草图的代码是什么样的? 如果是简单的绘图说明,你可以用多种方式重写它。 一种选择是只使用屏幕外的PGraphics缓冲区,而不使用整个PApplet部分

以下是一个基本示例:

import processing.core.PGraphicsJava2D;

public class PGraphicsBufferTest {

    public static void main(String[] args) {
        PGraphicsJava2D pg = new PGraphicsJava2D();
        // set dimensions
        pg.setSize(300, 300);
        // set as offline (shouldn't expect a PApplet parent)
        pg.setPrimary(false);
        // draw
        pg.beginDraw();
        pg.background(0);
        pg.ellipse(150, 150, 250, 250);
        pg.endDraw();
        // save to disk: in absence of parent PApplet, must use absolute path
        pg.save("/path/to/dataset/sequence/frame.png");
    }

}
如果将其另存为
PGraphicsBufferTest.java
(并将Processing的core.jar保存在同一文件夹中),例如:

  • 编译:
    javac-cp core.jar PGraphicsBufferTest.java
  • 运行:
    java-cp.:core.jar PGraphicsBufferTest
    这可能仍然会短暂地生成一个窗口,但希望是一个更简单/更快的设置
(我特意选择了Java2D,因为它已经是core.jar的一部分。当然,您可以使用
PGraphics2D
,只需记住还要添加OpenGL依赖项(gluegen rt、jogl),并设置类路径(
-cp
),以及本机路径(
-Djava.library.path
)参数)

例如,有一个较旧的
pyprocessing
pip包,它使用Pyglet(OpenGL包装器)。 因为Pyglet可以无头运行,希望Pyglet也可以无头运行。 我自己还没有测试过,但是如果它确实有效,您可以保留非常相似的语法

如果它是简单的2D绘图指令,并且对于计算机视觉项目来说,那么OpenCV的绘图功能就足够了

还有其他Python软件包提供了带有无头配置的2D绘图功能(我想到了Pillow的模块)


我认为另一个选择,如果不是比你已经在做的事情更复杂的话,就是使用。这是C++,但受处理的启发,因此非常相似(例如,代码> SETUP())/>代码> <代码> DRAWEL()(UpDATE)+ DRAW()/代码>,<代码>行(X1,Y1,X2,Y2)< /C> >代码> >(X1,Y1,X2,Y2)< /代码>等),可以运行。

此指南可能是有用的:“KaveWorkman我起初不相信这个建议,因为我假设将显示输出分流到阴间仍然需要时间来“创建”图像并等待它们。但是我快速地运行了我的代码,无论是否运行
xvfb
,执行时间从23.4s变为0.00368s。请回答这个问题,这样我就可以给你信用。“为工作选择正确的工具。”这些对于开始一个新的迭代视频创建项目的人来说是很好的建议,但它没有提供更多的原始问题,承认最初选择了错误的工具,我只是试图加快它。