Skip to content

opencv crashes in Linux when used with webbrowser lib #1215

@loscrossos

Description

@loscrossos

minmal example

tested on ubuntu 2024.04lts with python3.13

save this file as test.py

import cv2
# other code where i need cv2 ommited
server_name="https://localhost:8080"
if __name__ == "__main__":
    import webbrowser
    if server_name.startswith("http"):
        url = server_name
    else:
        url = "http://" + server_name
    webbrowser.open(url , new = 0, autoraise = True)

now run it in a venv with only opencv installed

$python3.13 -m venv .envlin
$ . .envlin/bin/activate
(.envlin)$ pip install opencv_python
Collecting opencv_python
  Downloading opencv_python-4.13.0.92-cp37-abi3-manylinux_2_28_x86_64.whl.metadata (19 kB)
Collecting numpy>=2 (from opencv_python)
  Downloading numpy-2.4.4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.metadata (6.6 kB)
Downloading opencv_python-4.13.0.92-cp37-abi3-manylinux_2_28_x86_64.whl (72.9 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 72.9/72.9 MB 7.3 MB/s  0:00:10
Downloading numpy-2.4.4-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (16.6 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 16.6/16.6 MB 7.0 MB/s  0:00:02
Installing collected packages: numpy, opencv_python
Successfully installed numpy-2.4.4 opencv_python-4.13.0.92
$ python test.py 
QObject::moveToThread: Current thread (0x57e4655873d0) is not the object's thread (0x57e4655abf40).
Cannot move to target thread (0x57e4655873d0)

qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "/cv2test/.envlin/lib/python3.13/site-packages/cv2/qt/plugins" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: xcb, eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, wayland-egl, wayland, wayland-xcomposite-egl, wayland-xcomposite-glx.

Aborted (core dumped)

workarounds

some workarounds i have found:

  • people worked around by setting the variable export QT_QPA_PLATFORM=offscreen ( QObject::moveToThread Cannot move to target thread. Evezerest/PPOCRLabel#61 ) to one of he values in the error message. some work and "fix" it some dont.. but it should not be a guessing game.. should also not be the standard behavior to crash. I had hoped a virtual environment gives one the possibility to isolate the env.
  • deinstalling opencv-python and installing opencv-python-headless if you only need calculations also work. but the issue is that any library listing opencv-python as dependency will install it (this is specially true in "living" projects like comfyui). maybe one could install a place holser "none" lib

similar issues

this problem seems to exist since at least 2017: #46

@skvark any chance of a fix in the meanwhile?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions