Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cv2.imshow opens multiple windows with "opencv-python" package from Pypi #17827

Closed
decadenza opened this issue Jul 13, 2020 · 12 comments
Closed
Labels
bug category: highgui-gui category: 3rdparty needs investigation Collect and attach more details (build flags, stacktraces, input dumps, etc) priority: low

Comments

@decadenza
Copy link

decadenza commented Jul 13, 2020

System information
  • OpenCV => 4.3
  • Operating System / Platform => Debian 11 64 Bit
  • Python package from Pypi (not maintained by OpenCV team, unofficial package)
Detailed description

cv2.imshow opens multiple windows with the same name when used with cv2.videoCapture and multithreading.
This it is not happening with version 4.2.

opencv-python issue: opencv/opencv-python#362

Steps to reproduce

Minimal reproducer is here

Original reported code:

Minimum Python code to reproduce:

from threading import Thread
import cv2
           
CAMERA = 0
video_capture = cv2.VideoCapture(CAMERA)

def loop():
   while(running):
       video_capture.grab()

t=Thread(target=loop)       # use a separate thread

running = True
t.daemon=True 
t.start()
       
while(True):
   ret, img = video_capture.retrieve()
   if not ret:
       print("No image")
       continue
       
   cv2.imshow("TEST WINDOW", img)
   
   c = cv2.waitKey(1)             # Wait 1 ms
       
   if c == 27:
       running = False
       t.join()            # Gracefully stop thread
       break
   else:
       continue
cv2.destroyAllWindows()

Attached screenshot:
screen

@alalek
Copy link
Member

alalek commented Jul 13, 2020

  • How did you get OpenCV?
  • How many processes do you see for your app?

@decadenza
Copy link
Author

decadenza commented Jul 14, 2020

How did you get OpenCV?

I got OpenCV via pip3 in a virtual environment, the exact version I'm using is 4.3.0.36. Should I try to build from source code?

How many processes do you see for your app?

I see only one process.

I was able to reproduce the problem also without multithreading, in a basic code like this:

import cv2
if __name__ == "__main__":
    img0 = cv2.imread('one.png', cv2.IMREAD_GRAYSCALE)
    img1 = cv2.imread('two.png', cv2.IMREAD_GRAYSCALE)
    cv2.imshow("FIRST", img0)
    cv2.imshow("SECOND", img1)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

It happens every time I show two or more images.
screen

@alalek
Copy link
Member

alalek commented Jul 14, 2020

Last example works as expected (two different names - two windows)

First example is invalid:

  • video_capture is shared between threads. It is not allowed.

Usage questions should go to Users OpenCV Q/A forum: http://answers.opencv.org

@decadenza
Copy link
Author

Last example works as expected (two different names - two windows)

Not on my configuration apparently. Still trying to understand why.

video_capture is shared between threads. It is not allowed.

I didn't know that. I will find some alternative approach.

@ghost
Copy link

ghost commented Jul 16, 2020

I got the same problem and I use single thread
Configuration:

  • Ubuntu 20.04 LTS
  • OpenCV 4.3.0
  • Python 3.7.7

This is the code

import cv2

if __name__ == '__main__':

    roi_width = 300
    roi_height = 300

    cam = cv2.VideoCapture(0)
    while True:
        ret, original = cam.read()

        roi = original[0:roi_height, 0:roi_width]

        cv2.rectangle(original, (0, 0), (roi_width+5, roi_height+5), 5)

        cv2.imshow("original", original)
        cv2.imshow("roi", roi)

        k = cv2.waitKey(1)
        if k == ord('q'):
            break

    cv2.destroyAllWindows()

And I got the next result

@alalek
Copy link
Member

alalek commented Jul 16, 2020

cam.read()

There is missing required check for empty/None returned frame in provided code.
Other windows shows some garbage.

Try to capture parameters details through cv.utils.dumpInputArray():

print(cv.utils.dumpInputArray(original))
print(cv.utils.dumpInputArray(roi))

@ghost
Copy link

ghost commented Jul 16, 2020

I added a validation for empty frames and I still got same error, I don't' see those methods available on opencv libraries for python. The code works perfectly fine on windows os

@alalek
Copy link
Member

alalek commented Jul 17, 2020

Minimal code with problem reproducer on opencv-python==4.3.0.36:

import numpy as np
import cv2 as cv

a = np.zeros((240,320))

cv.imshow("test", a)
cv.waitKey(1)
cv.imshow("test", a)
cv.waitKey(1)
cv.imshow("test", a)
cv.waitKey(1)

cv.waitKey(0)

Sporadic shows 1-3 windows on mentioned version with bundled Qt backend:

  GUI: 
    QT:                          YES (ver 4.8.7 EDITION = OpenSource)
      QT OpenGL support:         NO
    GTK+:                        NO

Also see many warnings like these:

QObject::moveToThread: Current thread (0x5609db6afdf0) is not the object's thread (0x5609db99f2a0).
Cannot move to target thread (0x5609db6afdf0)

QObject::moveToThread: Current thread (0x5609db6afdf0) is not the object's thread (0x5609db99f2a0).
Cannot move to target thread (0x5609db6afdf0)

QObject::moveToThread: Current thread (0x5609db6afdf0) is not the object's thread (0x5609db99f2a0).
Cannot move to target thread (0x5609db6afdf0)

QObject::moveToThread: Current thread (0x5609db6afdf0) is not the object's thread (0x5609db99f2a0).
Cannot move to target thread (0x5609db6afdf0)

Can't reproduce with local build with System Qt (Fedora 31, cmake -DWITH_QT=ON ...):

--   GUI: 
--     QT:                          YES (ver 5.13.2)
--       QT OpenGL support:         NO
--     GTK+:                        NO

Extra windows or warnings are not observed.


Package opencv-python==4.3.0.36 is maintained here: https://github.com/skvark/opencv-python
Need to check details how Qt is built and used.

@alalek
Copy link
Member

alalek commented Jul 17, 2020

Package opencv-python==4.2.0.34 doesn't have such regression.

  GUI: 
    QT:                          YES (ver 4.8.7 EDITION = OpenSource)
      QT OpenGL support:         NO
    GTK+:                        NO

LD_DEBUG=files differences:

opencv-python==4.2.0.34
$ LD_DEBUG=files python test_17827.py 2>&1 | grep -i qt
    101908:	file=libQtGui-903938cd.so.4.8.7 [0];  needed by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/cv2.cpython-37m-x86_64-linux-gnu.so [0]
    101908:	file=libQtGui-903938cd.so.4.8.7 [0];  generating link map
    101908:	file=libQtTest-1183da5d.so.4.8.7 [0];  needed by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/cv2.cpython-37m-x86_64-linux-gnu.so [0]
    101908:	file=libQtTest-1183da5d.so.4.8.7 [0];  generating link map
    101908:	file=libQtCore-ada04e4a.so.4.8.7 [0];  needed by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/cv2.cpython-37m-x86_64-linux-gnu.so [0]
    101908:	file=libQtCore-ada04e4a.so.4.8.7 [0];  generating link map
    101908:	file=libgthread-2.0.so.0 [0];  needed by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/.libs/libQtGui-903938cd.so.4.8.7 [0]
    101908:	file=libglib-2.0.so.0 [0];  needed by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/.libs/libQtGui-903938cd.so.4.8.7 [0]
    101908:	file=libSM.so.6 [0];  needed by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/.libs/libQtGui-903938cd.so.4.8.7 [0]
    101908:	file=libICE.so.6 [0];  needed by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/.libs/libQtGui-903938cd.so.4.8.7 [0]
    101908:	file=libXrender.so.1 [0];  needed by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/.libs/libQtGui-903938cd.so.4.8.7 [0]
    101908:	file=libXext.so.6 [0];  needed by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/.libs/libQtGui-903938cd.so.4.8.7 [0]
    101908:	file=libX11.so.6 [0];  needed by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/.libs/libQtGui-903938cd.so.4.8.7 [0]
    101908:	file=/home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/.libs/libQtCore-ada04e4a.so.4.8.7 [0];  needed by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/.libs/libz-a147dcb0.so.1.2.3 [0] (relocation dependency)
    101908:	file=/home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/.libs/libQtCore-ada04e4a.so.4.8.7 [0];  needed by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/.libs/libcrypto-cc2fb98b.so.1.1 [0] (relocation dependency)
    101908:	file=/home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/.libs/libQtGui-903938cd.so.4.8.7 [0];  needed by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/.libs/libQtCore-ada04e4a.so.4.8.7 [0] (relocation dependency)
    101908:	file=/home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/.libs/libQtCore-ada04e4a.so.4.8.7 [0];  needed by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/.libs/libavcodec-4cf96bc1.so.58.65.103 [0] (relocation dependency)
    101908:	file=/home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/.libs/libQtCore-ada04e4a.so.4.8.7 [0];  needed by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/.libs/libavformat-b798543f.so.58.35.101 [0] (relocation dependency)
    101908:	calling init: /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/.libs/libQtCore-ada04e4a.so.4.8.7
    101908:	calling init: /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/.libs/libQtTest-1183da5d.so.4.8.7
    101908:	calling init: /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/.libs/libQtGui-903938cd.so.4.8.7
    101908:	calling fini: /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/.libs/libQtGui-903938cd.so.4.8.7 [0]
    101908:	calling fini: /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/.libs/libQtTest-1183da5d.so.4.8.7 [0]
    101908:	calling fini: /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/.libs/libQtCore-ada04e4a.so.4.8.7 [0]
opencv-python==4.3.0.36
$ LD_DEBUG=files python test_17827.py 2>&1 | grep -i qt
    102004:	file=libQtGui-a00f4bbc.so.4.8.7 [0];  needed by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/cv2.cpython-37m-x86_64-linux-gnu.so [0]
    102004:	file=libQtGui-a00f4bbc.so.4.8.7 [0];  generating link map
    102004:	file=libQtTest-6d3ddc1c.so.4.8.7 [0];  needed by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/cv2.cpython-37m-x86_64-linux-gnu.so [0]
    102004:	file=libQtTest-6d3ddc1c.so.4.8.7 [0];  generating link map
    102004:	file=libQtCore-6b7bca35.so.4.8.7 [0];  needed by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/cv2.cpython-37m-x86_64-linux-gnu.so [0]
    102004:	file=libQtCore-6b7bca35.so.4.8.7 [0];  generating link map
    102004:	file=libgthread-2.0.so.0 [0];  needed by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/../opencv_python.libs/libQtGui-a00f4bbc.so.4.8.7 [0]
    102004:	file=libglib-2.0.so.0 [0];  needed by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/../opencv_python.libs/libQtGui-a00f4bbc.so.4.8.7 [0]
    102004:	file=libfreetype-8d3bcff4.so.6.14.0 [0];  needed by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/../opencv_python.libs/libQtGui-a00f4bbc.so.4.8.7 [0]
    102004:	file=libgobject-2.0.so.0 [0];  needed by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/../opencv_python.libs/libQtGui-a00f4bbc.so.4.8.7 [0]
    102004:	file=libSM.so.6 [0];  needed by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/../opencv_python.libs/libQtGui-a00f4bbc.so.4.8.7 [0]
    102004:	file=libICE.so.6 [0];  needed by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/../opencv_python.libs/libQtGui-a00f4bbc.so.4.8.7 [0]
    102004:	file=libXi-e28fba09.so.6.1.0 [0];  needed by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/../opencv_python.libs/libQtGui-a00f4bbc.so.4.8.7 [0]
    102004:	file=libXrender.so.1 [0];  needed by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/../opencv_python.libs/libQtGui-a00f4bbc.so.4.8.7 [0]
    102004:	file=libXrandr-1b5fae8f.so.2.2.0 [0];  needed by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/../opencv_python.libs/libQtGui-a00f4bbc.so.4.8.7 [0]
    102004:	file=libXfixes-d274cb03.so.3.1.0 [0];  needed by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/../opencv_python.libs/libQtGui-a00f4bbc.so.4.8.7 [0]
    102004:	file=libXcursor-1a09904e.so.1.0.2 [0];  needed by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/../opencv_python.libs/libQtGui-a00f4bbc.so.4.8.7 [0]
    102004:	file=libXinerama-b7a62e01.so.1.0.0 [0];  needed by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/../opencv_python.libs/libQtGui-a00f4bbc.so.4.8.7 [0]
    102004:	file=libfontconfig-42c558d2.so.1.11.1 [0];  needed by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/../opencv_python.libs/libQtGui-a00f4bbc.so.4.8.7 [0]
    102004:	file=libXext.so.6 [0];  needed by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/../opencv_python.libs/libQtGui-a00f4bbc.so.4.8.7 [0]
    102004:	file=libX11.so.6 [0];  needed by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/../opencv_python.libs/libQtGui-a00f4bbc.so.4.8.7 [0]
    102004:	file=/home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/../opencv_python.libs/libQtGui-a00f4bbc.so.4.8.7 [0];  needed by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/../opencv_python.libs/libQtCore-6b7bca35.so.4.8.7 [0] (relocation dependency)
    102004:	calling init: /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/../opencv_python.libs/libQtCore-6b7bca35.so.4.8.7
    102004:	calling init: /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/../opencv_python.libs/libQtTest-6d3ddc1c.so.4.8.7
    102004:	calling init: /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/../opencv_python.libs/libQtGui-a00f4bbc.so.4.8.7
    102004:	file=libicui18n.so.50 [0];  dynamically loaded by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/../opencv_python.libs/libQtCore-6b7bca35.so.4.8.7 [0]
    102004:	file=libicui18n [0];  dynamically loaded by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/../opencv_python.libs/libQtCore-6b7bca35.so.4.8.7 [0]
    102004:	file=icui18n.so.50 [0];  dynamically loaded by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/../opencv_python.libs/libQtCore-6b7bca35.so.4.8.7 [0]
    102004:	file=icui18n [0];  dynamically loaded by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/../opencv_python.libs/libQtCore-6b7bca35.so.4.8.7 [0]
    102004:	file=gconf-2 [0];  dynamically loaded by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/../opencv_python.libs/libQtCore-6b7bca35.so.4.8.7 [0]
    102004:	file=gconf-2.so.4 [0];  dynamically loaded by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/../opencv_python.libs/libQtCore-6b7bca35.so.4.8.7 [0]
    102004:	file=libgconf-2 [0];  dynamically loaded by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/../opencv_python.libs/libQtCore-6b7bca35.so.4.8.7 [0]
    102004:	file=libgconf-2.so.4 [0];  dynamically loaded by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/../opencv_python.libs/libQtCore-6b7bca35.so.4.8.7 [0]
    102004:	file=libgtk-x11-2.0.so.0 [0];  dynamically loaded by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/../opencv_python.libs/libQtCore-6b7bca35.so.4.8.7 [0]
    102004:	file=libwacomcfg.so.0 [0];  dynamically loaded by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/../opencv_python.libs/libQtCore-6b7bca35.so.4.8.7 [0]
    102004:	file=libwacomcfg [0];  dynamically loaded by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/../opencv_python.libs/libQtCore-6b7bca35.so.4.8.7 [0]
    102004:	file=wacomcfg.so.0 [0];  dynamically loaded by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/../opencv_python.libs/libQtCore-6b7bca35.so.4.8.7 [0]
    102004:	file=wacomcfg [0];  dynamically loaded by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/../opencv_python.libs/libQtCore-6b7bca35.so.4.8.7 [0]
    102004:	file=gnomeui-2 [0];  dynamically loaded by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/../opencv_python.libs/libQtCore-6b7bca35.so.4.8.7 [0]
    102004:	file=gnomeui-2.so.0 [0];  dynamically loaded by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/../opencv_python.libs/libQtCore-6b7bca35.so.4.8.7 [0]
    102004:	file=libgnomeui-2 [0];  dynamically loaded by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/../opencv_python.libs/libQtCore-6b7bca35.so.4.8.7 [0]
    102004:	file=libgnomeui-2.so.0 [0];  dynamically loaded by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/../opencv_python.libs/libQtCore-6b7bca35.so.4.8.7 [0]
    102004:	file=gnomevfs-2 [0];  dynamically loaded by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/../opencv_python.libs/libQtCore-6b7bca35.so.4.8.7 [0]
    102004:	file=gnomevfs-2.so.0 [0];  dynamically loaded by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/../opencv_python.libs/libQtCore-6b7bca35.so.4.8.7 [0]
    102004:	file=libgnomevfs-2 [0];  dynamically loaded by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/../opencv_python.libs/libQtCore-6b7bca35.so.4.8.7 [0]
    102004:	file=libgnomevfs-2.so.0 [0];  dynamically loaded by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/../opencv_python.libs/libQtCore-6b7bca35.so.4.8.7 [0]
    102004:	file=/usr/lib64/qt4/plugins/imageformats/libqgif.so [0];  dynamically loaded by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/../opencv_python.libs/libQtCore-6b7bca35.so.4.8.7 [0]
    102004:	file=/usr/lib64/qt4/plugins/imageformats/libqgif.so [0];  generating link map
    102004:	file=libQtGui.so.4 [0];  needed by /usr/lib64/qt4/plugins/imageformats/libqgif.so [0]
    102004:	file=libQtGui.so.4 [0];  generating link map
    102004:	file=libQtCore.so.4 [0];  needed by /usr/lib64/qt4/plugins/imageformats/libqgif.so [0]
    102004:	file=libQtCore.so.4 [0];  generating link map
    102004:	file=/lib64/libQtGui.so.4 [0];  needed by /lib64/libQtCore.so.4 [0] (relocation dependency)
    102004:	calling init: /lib64/libQtCore.so.4
    102004:	calling init: /lib64/libQtGui.so.4
    102004:	calling init: /usr/lib64/qt4/plugins/imageformats/libqgif.so
    102004:	opening file=/usr/lib64/qt4/plugins/imageformats/libqgif.so [0]; direct_opencount=1
    102004:	file=/usr/lib64/qt4/plugins/imageformats/libqico.so [0];  dynamically loaded by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/../opencv_python.libs/libQtCore-6b7bca35.so.4.8.7 [0]
    102004:	file=/usr/lib64/qt4/plugins/imageformats/libqico.so [0];  generating link map
    102004:	calling init: /usr/lib64/qt4/plugins/imageformats/libqico.so
    102004:	opening file=/usr/lib64/qt4/plugins/imageformats/libqico.so [0]; direct_opencount=1
    102004:	file=/usr/lib64/qt4/plugins/imageformats/libqjpeg.so [0];  dynamically loaded by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/../opencv_python.libs/libQtCore-6b7bca35.so.4.8.7 [0]
    102004:	file=/usr/lib64/qt4/plugins/imageformats/libqjpeg.so [0];  generating link map
    102004:	file=libjpeg.so.62 [0];  needed by /usr/lib64/qt4/plugins/imageformats/libqjpeg.so [0]
    102004:	calling init: /usr/lib64/qt4/plugins/imageformats/libqjpeg.so
    102004:	opening file=/usr/lib64/qt4/plugins/imageformats/libqjpeg.so [0]; direct_opencount=1
    102004:	file=/usr/lib64/qt4/plugins/imageformats/libqmng.so [0];  dynamically loaded by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/../opencv_python.libs/libQtCore-6b7bca35.so.4.8.7 [0]
    102004:	file=/usr/lib64/qt4/plugins/imageformats/libqmng.so [0];  generating link map
    102004:	file=libmng.so.2 [0];  needed by /usr/lib64/qt4/plugins/imageformats/libqmng.so [0]
    102004:	calling init: /usr/lib64/qt4/plugins/imageformats/libqmng.so
    102004:	opening file=/usr/lib64/qt4/plugins/imageformats/libqmng.so [0]; direct_opencount=1
    102004:	file=/usr/lib64/qt4/plugins/imageformats/libqsvg.so [0];  dynamically loaded by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/../opencv_python.libs/libQtCore-6b7bca35.so.4.8.7 [0]
    102004:	file=/usr/lib64/qt4/plugins/imageformats/libqsvg.so [0];  generating link map
    102004:	file=libQtSvg.so.4 [0];  needed by /usr/lib64/qt4/plugins/imageformats/libqsvg.so [0]
    102004:	file=libQtSvg.so.4 [0];  generating link map
    102004:	calling init: /lib64/libQtSvg.so.4
    102004:	calling init: /usr/lib64/qt4/plugins/imageformats/libqsvg.so
    102004:	opening file=/usr/lib64/qt4/plugins/imageformats/libqsvg.so [0]; direct_opencount=1
    102004:	file=/usr/lib64/qt4/plugins/imageformats/libqtga.so [0];  dynamically loaded by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/../opencv_python.libs/libQtCore-6b7bca35.so.4.8.7 [0]
    102004:	file=/usr/lib64/qt4/plugins/imageformats/libqtga.so [0];  generating link map
    102004:	calling init: /usr/lib64/qt4/plugins/imageformats/libqtga.so
    102004:	opening file=/usr/lib64/qt4/plugins/imageformats/libqtga.so [0]; direct_opencount=1
    102004:	file=/usr/lib64/qt4/plugins/imageformats/libqtiff.so [0];  dynamically loaded by /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/../opencv_python.libs/libQtCore-6b7bca35.so.4.8.7 [0]
    102004:	file=/usr/lib64/qt4/plugins/imageformats/libqtiff.so [0];  generating link map
    102004:	file=libtiff.so.5 [0];  needed by /usr/lib64/qt4/plugins/imageformats/libqtiff.so [0]
    102004:	calling init: /usr/lib64/qt4/plugins/imageformats/libqtiff.so
    102004:	opening file=/usr/lib64/qt4/plugins/imageformats/libqtiff.so [0]; direct_opencount=1
    102004:	calling fini: /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/../opencv_python.libs/libQtGui-a00f4bbc.so.4.8.7 [0]
    102004:	calling fini: /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/../opencv_python.libs/libQtTest-6d3ddc1c.so.4.8.7 [0]
    102004:	calling fini: /home/alalek/penv3-pycv/lib/python3.7/site-packages/cv2/../opencv_python.libs/libQtCore-6b7bca35.so.4.8.7 [0]
    102004:	calling fini: /usr/lib64/qt4/plugins/imageformats/libqgif.so [0]
    102004:	calling fini: /usr/lib64/qt4/plugins/imageformats/libqico.so [0]
    102004:	calling fini: /usr/lib64/qt4/plugins/imageformats/libqjpeg.so [0]
    102004:	calling fini: /usr/lib64/qt4/plugins/imageformats/libqmng.so [0]
    102004:	calling fini: /usr/lib64/qt4/plugins/imageformats/libqsvg.so [0]
    102004:	calling fini: /lib64/libQtSvg.so.4 [0]
    102004:	calling fini: /usr/lib64/qt4/plugins/imageformats/libqtga.so [0]
    102004:	calling fini: /usr/lib64/qt4/plugins/imageformats/libqtiff.so [0]
    102004:	calling fini: /lib64/libQtGui.so.4 [0]
    102004:	calling fini: /lib64/libQtCore.so.4 [0]

Second variant loads (after own bundled Qt binaries):

  • Qt plugins from system like /usr/lib64/qt4/plugins/imageformats/libqgif.so
  • Qt binaries from system: /lib64/libQtGui.so.4

This causes conflict and malformed behavior.

Not sure that this can be fixed in OpenCV source code.


BTW, OpenCV 4.2.0 => 4.3.0 highgui changes: git diff 4.2.0...4.3.0 -- modules/highgui/src/ (nothing critical)

@ghost
Copy link

ghost commented Jul 17, 2020

I tested the code with version 3.4.10.35 and the error is the same

@alalek
Copy link
Member

alalek commented Jul 17, 2020

see opencv/opencv-python#362

@skvark
Copy link
Member

skvark commented Jul 18, 2020

@alalek Thanks for those debug outputs. This issue cannot be fixed in OpenCV, the issue is related to Qt conflicts between the bundled Qt4 in the Python wheels and system Qt4/5 installations.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug category: highgui-gui category: 3rdparty needs investigation Collect and attach more details (build flags, stacktraces, input dumps, etc) priority: low
Projects
None yet
Development

No branches or pull requests

3 participants