以下情景:我有多个视频流,这些流是从OpenCV获取的,并通过实现QQuickImageProvider将其显示在我的QML GUI中。如果图像发生变化,会发出信号,导致GUI中的图像调用提供程序的requestImage(...)函数。我对QImage的底层实现和特别是如果我将requestImage(...)中的其中一个图像传递给GUI所发生的情况并不了解,但是QImage的共享内存原则表明,当我的OpenCV线程更新正在被读取/传递/等待GUI时,可能会出现问题。这正确吗?
我计划采取的方法是向提供程序添加一个QMutex,在图像更新和请求期间都进行锁定,并在请求函数中将所请求的图像复制到新的QImage中,并在其上调用“bits()”函数,这显然应该导致深度复制,然后释放互斥体。这样做有意义吗?而且必要吗?
谢谢
我计划采取的方法是向提供程序添加一个QMutex,在图像更新和请求期间都进行锁定,并在请求函数中将所请求的图像复制到新的QImage中,并在其上调用“bits()”函数,这显然应该导致深度复制,然后释放互斥体。这样做有意义吗?而且必要吗?
谢谢