我有一个正在运行的 PyQt 应用程序,它包含 4 个独立的多进程(不是池)。我有来自相机、状态机、UI 事件处理程序和机器学习推理的视频捕获。
我正在努力尽可能减少我的 ML 推理,所以速度是我的目标。我注意到,当我暂停显示捕获的图像时,这将显着加快我的 ML 推理速度。
显示捕获的图像是发生在我的视频捕获过程和 UI 事件处理过程之间的过程。为什么当我停止图像从视频捕获到 UI 时,如果它们都是单独的进程,我的 ML 推理会加速吗?在同一个应用程序中生成进程时是否有一些开销?
这里是显着减慢一切的代码。
@pyqtSlot(np.ndarray)
def update_image(self, cv_img):
def convert_cv_qt(cv_img):
"""Convert from an opencv image to QPixmap"""
h, w = cv_img.shape
convert_to_Qt_format = QtGui.QImage(cv_img, w, h, w, QtGui.QImage.Format_Grayscale8)
p = convert_to_Qt_format.scaled(self.vw.disply_width, self.vw.display_height, Qt.KeepAspectRatio)
return QPixmap.fromImage(p)
"""Updates the image_label with a new opencv image"""
qt_img = convert_cv_qt(cv_img)
self.vw.image_label.setPixmap(qt_img)
最大的时间浪费在下面,它将 720x200 图像缩放到 4k 显示器,大约 3000x1000
p = convert_to_Qt_format.scaled(self.vw.disply_width, self.vw.display_height, Qt.KeepAspectRatio)