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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions