问题:Glib-Gobject 警告 **:无法注册现有类型 'GDKDisplayManager'



我已经用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')

这段代码在我的电脑上成功运行,所以问题不在函数中,我认为是关于我的树莓派上的PyQt

[问题已解决]

我正在用PyQt5开发GUI。

运行此代码后,我收到错误消息:

(python3:2306(:GLib GObject警告**:10:38:58.937:无法注册现有类型"GdkDisplayManager"(python3:2306(:GLib CRITICAL**:10:38:58.938:g_once_init_leave:断言'结果!="0"失败(python3:2306(:GLib GObject CRITICAL**:10:38:58.939:g_object_new_with_properties:断言'g_TYPE_IS_object(object_TYPE('失败

def SelectROI(self):
#cv2.imshow("Select Region of Interest", self.browsed_img4)
ImageToCrop = self.tmp_4.copy()

r = cv2.selectROI(ImageToCrop)
# Crop image
imCrop = ImageToCrop[int(r[1]):int(r[1]+r[3]), int(r[0]):int(r[0]+r[2])]

当你使用不同的gtk版本时,就会出现问题。。。对于我的情况,我在QT配置中使用gtk2,但在我的机器中我使用gtk3。

【解决方案】

编辑qt5ct.conf文件

sudo nano /etc/xdg/qt5ct/qt5ct.conf
# replace style=gtk2 with style=gtk3
ctrl+x y ENTER

我在运行Ubuntu 18.04的Dell G7 17 7790笔记本电脑上尝试执行ipython2 --matplotlib=qt时遇到了类似的错误,该笔记本电脑安装了Python 2.7、Python-qt4、Python-pyqt5和Python-pyside。

安装python-qtpy解决了我的问题。希望这对你有用。

最新更新