如何将C ++变量传递给Processing脚本?

时间:2016-03-10 18:11:05

标签: java c++ opencv image-processing processing

我用C ++编写了一个应用程序,使用openCV库根据HSV值跟踪对象。应用程序获取并设置被跟踪对象的X和Y坐标,这些参数可在参数xPos和yPos中获得。我现在必须在Processing v3中编写一个程序,并希望将C ++参数传递给Processing,以便能够将它们传递给ardunio并使用Firmata库来驱动伺服器等。

任何帮助都会令人惊叹。即使只是简单地说,“你不能这样做”。

3 个答案:

答案 0 :(得分:0)

执行此操作的一种方法是在处理草图中使用JNAJNI。这将允许您从处理代码中调用C ++应用程序。

以这种方式思考:代替您的C ++应用程序调用Processing sketch,Processing Processing将调用您的C ++应用程序。然后,您只需在C ++应用程序中提供函数,这些函数将返回您需要在Processing sketch中使用的值。

另一个选择是简单地用Java重写你的C ++应用程序,使用一个已经与Processing一起使用的Java OpenCV库。这可能是我推荐的。

答案 1 :(得分:0)

除了Kevin的回答,您还可以在opencv c ++应用程序和Processing之间建立套接字连接。这可以是TCP或UDP。

有一个很好的协议建立在UDP之上,名为OSC,你可能想要使用它并发送带有xPos,yPos参数的消息。

如果您只是使用Processing来发送一些Arduino消息,请考虑使用OpenFrameworks。它受到了Processing的启发,所以有很多相似之处(setup()/ draw()循环等),你可以在c ++中使用ofxCv来满足你的OpenCV需求。 OpenFrameworks附带一个串行库,但也有一个基于Firmata的设置。有关详细信息,请参阅ofArduino

如果您只想跟踪彩色对象并将其坐标传递给Arduino,您可能会喜欢Pixy cam project

pixy cam image 1

pixy cam image 2

答案 2 :(得分:0)

一种简单的方法是在C ++应用程序中打开一个套接字,并将数据直接泵送到本地环回的java应用程序/脚本中。关于套接字/ TCP / UDP编程的教程很多,所以我在这里不太具体。尽管最初设置起来有点复杂,但我建议使用TCP而不是使用UDP。

如果您正在使用Linux,ROS非常适合连接不同的模块化应用程序(尽管面向机器人),并为您完成所有困难的工作。它还有很多OpenCV模块。

共享内存空间最终将难以实现。