我已经用pyqt和opencv python设计了一个接口到我的树莓上,所以当我运行一个基本的测试来打开摄像机时没有任何问题(cv2.imshow('test',frame),这太基本了,只是为了检查我的摄像机是否在工作),是的,摄像机成功打开了,但当我试图在我的pyqt5上创建的接口中打开摄像机时,问题就发生了,因为它启动了几个错误,但主要是 Glib-Gobject-Warning **: cannot register existing type 'GDKDisplayManager'
完全错误。
Glib-Gobject-Warning **: cannot register existing type 'GDKDisplayManager'
Glib-critical **: g_once_init_leave: assertion 'result != 0 ' failed
Glib-Gobject-CRITICAL **:g_object_new: assertion 'G_TyPE_IS_OBJECT(Object_type)'fail
Glib-GObject-WARNING **: invalid (null) pointer instance
Glib-GObject-CRTICAL **: g_signal_connect_data: assertion 'G_TYPE_CHECK_INSTANCE(instance)'failed
Glib_GObject-WARNING **: cannot register existing type 'GdkDisplay'
Glib-critical **: g_once_init_leave: assertion 'result != 0 ' failed
Glib-Gobject-CRITICAL **: g_type_register_static: assertion 'parent_Type > 0'failed
Glib-critical **: g_once_init_leave: assertion 'result != 0 ' failed
Glib-Gobject-CRITICAL **:g_object_new: assertion 'G_TyPE_IS_OBJECT(Object_type)'failed
这是打开摄像机的功能
def OpenCamera(self):
self.setup_CameraSettings()
cap = cv2.VideoCapture(self.CameraSource) # video capture source camera (Here webcam of laptop)
cap.set(3, self.Resolution_x) # set the resolution
cap.set(4, self.Resolution_y)
cap.set(cv2.CAP_PROP_AUTOFOCUS, 0) # turn the autofocus off
focus = self.Focus # min: 0, max: 255, increment:5
cap.set(cv2.CAP_PROP_FOCUS, focus)
ret,frame = cap.read() # return a single frame in variable `frame`
if ret== True:
cv2.imshow('Settings Test',frame)
cv2.waitKey(0)
cv2.destroyAllWindows()
else:
self.popUp_Message('Camera Unplugged')
这段代码在我的PC上成功运行,所以问题不在函数上,我认为是PyQt在我的树莓派上的问题。
当我试图执行类似的错误时,我遇到了类似的错误 ipython2 --matplotlib=qt
在一台运行Ubuntu 18.04、安装了Python 2.7、Python-qt4、Python-pyqt5和Python-pyside的戴尔G7 17 7790笔记本上安装。
安装 python-qtpy
解决了我的问题。希望这对你有用。