cv2.imShow() vs. imShow() within c++ program
To whom it may concern:
We build openCV on top of QT5 over Wayland-EGL for Embedded Linux on ARMv7. The cv2.imShow() invoked within python does not work as expected while the imShow() with C++ works as expected.
- detect_barcode sample_barcode.jpg 1 1 (call imshow() within C++ program): OK qt5 QPA log: QWaylandIntegration::initializeClientBufferIntegration() with mDisplay = QtWaylandClient::QWaylandDisplay(0xaec70) Using Wayland-EGL QWaylandEglClientBufferIntegration::initialize with Display = QtWaylandClient::QWaylandDisplay(0xaec70) //eglGetDispalt(wl_display) wl_display = 0xaedc0 *wl_display = 0xb2b8c6b0 &wl_display_interface = 0xb2b8c6b0
SGX DDK log: wlpvr: hNativeDisplay=0xaedc0, (void *)dpy=0xb2b8c6b0 &wl_display_interface=0xb2b8c6b0
- python hist.py ../../../ti/image/sample_barcode.jpg (call cv2.imshow('image',im)): Failed qt5 QPA log: QWaylandIntegration::initializeClientBufferIntegration() with mDisplay = QtWaylandClient::QWaylandDisplay(0x3ecc28) Using Wayland-EGL QWaylandEglClientBufferIntegration::initialize with Display = QtWaylandClient::QWaylandDisplay(0x3ecc28) //eglGetDispalt(wl_display) wl_display = 0x3ecd78 *wl_display = 0xa57f86ac &wl_display_interface = 0xa5d62970
SGX DDK log: wlpvr: hNativeDisplay=0x3ecd78, (void *)dpy=0xa57f86ac &wl_display_interface=0xb19456b0
There are two issues here. The wl_display_interface shown at qt5 QPA is different from the one shown at SGX DDK. The first entry of wl_display does not point to either one of wl_display_interface.
The question is how cv2.imShow() linked with plugins and dynamic loadable modules such as libwayland-client.so, QT plugins, libEGL.so and etc.
Best regards,
Eric Ruei