如何解决Python:可以与CV2对象跟踪器一起使用多处理吗?
我的代码中包含以下循环
# Update active trackers
timestamp = vs.get(cv2.CAP_PROP_POS_MSEC)
for objectID in list(trafficDict):
ok = trafficDict[objectID].updateTracker(image,timestamp)
if not ok:
del trafficDict[objectID] #remove the tracker
我想通过新映像将每个跟踪器的更新(此处为cv2.TrackerMedianFlow)发送到单独的进程中。但是,这似乎是不可能的(“不能腌制”)。我已经在顶层创建了一个函数来调用类方法,但是错误并没有消失。我怀疑CV2不允许这样做吗?以前有做过的人吗?
解决方法
trafficDict[objectID]
似乎是一些自定义Class类实例。您没有分享如何实际交流这两个过程的方式,但是对于大多数方法,正如您的错误所建议的那样,要发送的对象必须是 pickable (可通过pickle
模块序列化)或它必须是字符串,因为实际上只能通过大多数IPC方法发送此类类型。
想像一下,如果在其他过程中不会定义类型-它如何解释刚刚收到的内存中的东西?
如果通信是面向面向数据的,则最简单的解决方案是仅映射所需的字段,然后再将其发送到简单的字典中(请注意,该dict中的任何值都必须是可选的还是自己准备一个JSON,然后通过pipe
或socket
发送一个简单的字符串。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。