cv2.imShow() vs. imShow() within c++ program

asked 2016-10-05 11:11:04 -0600

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.

  1. 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

  1. 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

edit retag flag offensive close merge delete