我的目标是从OpenCV(C++)将(x,y)坐标的JSON流发布到MQTT代理。我对从OpenCV传输JSON数据到MQTT的好方法感到困惑。
我目前有一个MQTT代理,它管理计算机1上的Python发布者脚本和计算机2上的Javascript客户端脚本之间的JSON消息队列。我有运行OpenCV的计算机3,需要发送许多(x,y)坐标的小JSON Blob。与MQTT经纪人几乎实时。
我最初考虑将坐标从OpenCV连续写入本地文本文件,然后由并行运行的Python MQTT发布者脚本连续读取。但是,围绕文件锁定存在一些问题,似乎不需要写入磁盘。
理想情况下,我希望坐标流保留在内存中,并经常(例如每10毫秒)发布到MQTT代理。我正在努力寻找一种使用stdin / stdout在OpenCV代码和Python发布者脚本之间工作的方法。
感谢您的指导。谢谢。
最佳答案
您提到了发布者的python脚本。
这是发布者:
#!/usr/bin/env python3
import paho.mqtt.client as mqtt
# This is the Publisher
client = mqtt.Client()
client.connect("localhost",1883,60)
client.publish("topic/test", "Hello world!", qos=0, retain=False)
client.disconnect()
这是一个订户:
#!/ usr / bin / env python3
将paho.mqtt.client导入为mqtt
# This is the Subscriber
def on_connect(client, userdata, flags, rc):
print("Connected with result code "+str(rc))
client.subscribe("topic/test")
def on_message(client, userdata, msg):
if msg.payload.decode() == "Hello world!":
print("Yes!")
client.disconnect()
client = mqtt.Client()
client.connect("localhost",1883,60)
client.on_connect = on_connect
client.on_message = on_message
client.loop_forever()