This simple program imports both cv2 and Gdk and tries to do a simple imshow() which fails with a bunch of assertions:
import cv2
import numpy as np
import gi
gi.require_version('Gtk', '3.0')
gi.require_version('Gdk', '3.0')
from gi.repository import Gdk
from gi.repository import GdkPixbuf
print('imshowing...')
cv2.imshow(mat=np.zeros((100, 100, 3), dtype=np.uint8), winname='test')
print('all done')
It fails with the following:
mshowing...
./fail.py:9: Warning: cannot register existing type 'GdkDisplayManager'
cv2.imshow(mat=np.zeros((100, 100, 3), dtype=np.uint8), winname='test')
./fail.py:9: Warning: g_once_init_leave: assertion 'result != 0' failed
cv2.imshow(mat=np.zeros((100, 100, 3), dtype=np.uint8), winname='test')
./fail.py:9: Warning: g_object_new_with_properties: assertion 'G_TYPE_IS_OBJECT (object_type)' failed
cv2.imshow(mat=np.zeros((100, 100, 3), dtype=np.uint8), winname='test')
./fail.py:9: Warning: invalid (NULL) pointer instance
cv2.imshow(mat=np.zeros((100, 100, 3), dtype=np.uint8), winname='test')
./fail.py:9: Warning: g_signal_connect_data: assertion 'G_TYPE_CHECK_INSTANCE (instance)' failed
cv2.imshow(mat=np.zeros((100, 100, 3), dtype=np.uint8), winname='test')
./fail.py:9: Warning: cannot register existing type 'GdkDisplay'
cv2.imshow(mat=np.zeros((100, 100, 3), dtype=np.uint8), winname='test')
./fail.py:9: Warning: g_type_register_static: assertion 'parent_type > 0' failed
cv2.imshow(mat=np.zeros((100, 100, 3), dtype=np.uint8), winname='test')
Segmentation fault (core dumped)
Any idea how to get the two to work properly together?
Cheers,