You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@braindevices@TechnoConserve can you provide more information about your Ubuntu environment, the output of which -a python3, which -a pip, pip freeze, env (Always remember to check for any secret information that shouldn't be shared such as API keys or other items before you post the output of env) , and apt list --installed would all prove useful.
uname -a
Linux ave-GL552VW 4.10.0-35-generic #39~16.04.1-Ubuntu SMP Wed Sep 13 09:02:42 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
which -a python3
/home/ave/venv/opencv/bin/python3
/home/ave/venv/potato/bin/python3
/usr/bin/python3
which -a pip
/home/ave/venv/potato/bin/pip
/home/ave/.local/bin/pip
/usr/local/bin/pip
/usr/bin/pip
That does seem puzzling to me since it only picked up pip in one of my virtual environments regardless of whether I have the opencv virtual environment active or not.
Same here, opencv 3.3.0 and ubuntu 16.04
Trying cv2.namedWindow('test', cv2.WINDOW_AUTOSIZE) with 3.3.0.10 returns the same QObject error, but using 3.2.0.8 returns
<ipython-input-3-2efaecccc8a8> in <module>()
----> 1 cv2.namedWindow('test', cv2.WINDOW_AUTOSIZE)
error: /io/opencv/modules/highgui/src/window.cpp:565: error: (-2) The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function cvNamedWindow
And I already have installed libgtk2.0-dev and pkg-config
Reacted by Nayar Joolfoo, Abraham K. Lagat, thirsty-camel, Shubham Singh Paliwal, Henry M. Clever, Evan Loughlin, Tim Anders, Mederic Fourmy and Jiaxu Xing
Reacted by Abdul, Kathiravan Natarajan, Rosie(Ruoxi) Shi, ZTP, TomRiddle, Alexey Abel, ousinkou, Kiran Sanjeevan Cabeza, Li Rui, Yiyi Yan and 10 more
@caixiaofan This simply lets you use the opencv binding shipped in apt-get and stop using this repo. IMHO issues in this repo should focus on how to solve problems in this library.
Thanks @NikkoWei. As I don't want to break my KDE DE I followed your instruction. test code runs perfectly.
It's risky to remove libqt5x11extras5 or kde-style-breeze-qt4 for environment which need the modules.
In my case, I work on Ubuntu with KDE. So libqt5x11extras5 or kde-style-breeze-qt4 are important for my desktop environment.
I found there are Qt conflicts between those in opencv-python package and those in system path. The steps to find the problem are the same as @areche:
I found there are two version of Qt are used by loader in output.txt:
...
10836: symbol=_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_; lookup in file=/home/lnwei/.conda/envs/opencv_test/lib/python3.6/site-packages/cv2/.libs/libQtGui-903938cd.so.4.8.7 [0]
10836: symbol=_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_; lookup in file=/home/lnwei/.conda/envs/opencv_test/lib/python3.6/site-packages/cv2/.libs/libQtTest-1183da5d.so.4.8.7 [0]
10836: symbol=_ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_; lookup in file=/home/lnwei/.conda/envs/opencv_test/lib/python3.6/site-packages/cv2/.libs/libQtCore-6df570dd.so.4.8.7 [0]
...
10836: symbol=_ZTI14QWindowSurface; lookup in file=/usr/lib/x86_64-linux-gnu/libQtDBus.so.4 [0]
10836: symbol=_ZTI14QWindowSurface; lookup in file=/usr/lib/x86_64-linux-gnu/libQtCore.so.4 [0]
10836: symbol=_ZTI14QWindowSurface; lookup in file=/usr/lib/x86_64-linux-gnu/libQtGui.so.4 [0]
...
As you see, there are two version Qtlib are used: 4.8.7 in the python packages path(I use conda environment) and 4 in the system path.
So it's probably the Qt conflicts.
There are 2 ways to solve this problem:
Rebuild opencv by source to link Qtlib in system path. After make -j8, move the python library of opencv to overwrite the library in your python packages environment
I didn't have this issue at first, then cv2.namedWindow just stopped working for me without me making any system changes. I noticed in dmesg the following:
python[29883]: segfault at 0 ip 00007fa8c3c114be sp 00007ffcf5c34740 error 4 in libxcb.so.1.1.0[7fa8c3c07000+21000]
After a quick Google, I found this thread, which recommended removing the libqt5x11extras5 package. I just removed that (and the 121 dependent packages), and it's working properly again. So like @skvark mentioned, it's probably due to Qt conflicts.
Anyway, without knowing if linking statically is even possible and solves the problem, legal debates are over nothing.
FYI, it is possible to link to Qt statically, and we would have to either
provide opencv-python and OpenCV source code (and require anyone else who conveys it to do the same) -- i.e. relicense opencv-python as strong copyleft; or
I believe the temporary cmake-build directory tree, without the resulting Python module, would qualify. In essence, we need the makefiles to pick up the object files without recompiling them and perform linking for whatever links to Qt and all the way up to the extension module as usual. Not sure if CMake-generated makefiles can do that, or they would complain and require OpenCV sources as well to check if the object files are up to date.
An archive of this tree for each release with static Qt would need to be available to opencv-python users somehow -- e.g. at Github releases page (for at least 3 years since release date).
LICENSE-3RD-PARTY.txt would need to refer to that location in its Qt section.
Anyone who conveys opencv-python would have the same obligation and would either have to rely on us, or (e.g. if they make modifications), provide such an archive themselves and update LICENSE-3RD-PARTY.txt accordingly.
I.e. this is not any easier at all than providing the source code in the first place.
QObject::moveToThread: Current thread (0x55bb9bd3a9f0) is not the object's thread (0x55bb9bf9a6e0).
Cannot move to target thread (0x55bb9bd3a9f0)
/tmp/foo.png is a colour image of size 512x512.
I am on a Manjaro system with python 3.8.3, opencv-python 4.3.0.36, KDE and Qt5 (although this should not matter as opencv-python ships with own version of Qt). Looking through the LD_DEBUG output, I can see the system Qt libs being loaded as a result of an indirect dependency from the opencv-python shipped Qt libs!
As you can see, the opencv-python provided libQtCore is dynamically loading this libqgif.so because it is present in some known path to it /usr/lib/qt4/plugins/imageformats. Given that @areche mentions /usr/lib/kde4/plugins/styles/breeze.so being loaded on their system, it could be that the 4.8.7 Qt shipped with opencv-python is not built correctly to ignore loading plugins from well known "system" paths. I am not even sure if such an option exists in the Qt build configuration as it has been many years since I have built Qt from source.
It would be great if some of the people on this thread with the same issue can check if they have the /usr/lib/qt4/plugins or /usr/lib/kde4/plugins paths showing up in their debug logs (LD_DEBUG=all python myfile.py). If other people can confirm one (or both) of these paths is appearing in their output, someone can check if there is a Qt build config to get rid of searching system paths for plugins to load dynamically.
The latest issue with Qt4 is related to the manylinux2014 upgrade. I had to use qt-devel directly from CentOS 7 repos because there were some compiler related issues when I tried to compile Qt4 manually. In older manylinux1 releases Qt4 was compiled manually. Please check the Dockerfiles in the docker folder in this repo for more info. I'll try to upgrade to Qt5 before next release which hopefully solves some of these issues. Plugins path can be set as an env var in Qt5 (like it is set currently in macOS builds in __init__.py), but not in Qt4 based on some fast searches I did earlier.
Starting from 3.4.10.37 and 4.3.0.38 the pre-built wheels will include Qt 5.15 which has been built in a namespace so the conflict issue should be fixed. The new releases should be up in the next 24 hours. However, please note that I cannot guarantee that the wheels will work on all GNU/Linux systems. The new releases will include also source distributions which should allow to build the wheels locally if you encounter issues with the OpenCV GUI functions.
I would just like to add that I get this same error on 4.3.0.38 and forward but not on 4.3.0.36. I'm running Elementary OS 5.1.7 Hera (Ubuntu based).
I tried updating because cv2.imshow wasn't showing all of my images properly (some were just showing a small box instead of the image) and after updating they show as they should but I'm getting the same QObject::moveToThread error.
@joelcma Yeah, that "small box" bug was this one which was also caused by a Qt conflict: #362
Can't help much with that QObject::moveToThread error. Just make sure that your Python environment is consistent and you have removed all old versions of opencv-python from there. I have done everything I can to fix the issue.
It seem that I soved QObject::moveToThread: Current thread is not the objects thread. Cannot move to target thread, byconda uninstall pyqt. But I don't make sure its feasibility. And I found the QT about libs in /usr/lib/x86_64-linux-gnu whill be removed after the commond and every thing is fine now.
My problem was caused by QT. before I install QT, my opencv was fine.
I uninstalled QT but it did not help. I finally was able to make it work through "sudo apt-get autoremove libqt5x11extras5".
It didn't work for me, I have to submit a project but nothing seems to be working. I have Ubuntu 20.04 LTS, working in Spyder but unable to take videocapture. Please help.
Activity
skvark commentedon Sep 12, 2017
On which operating system? This is probably a bug in OpenCV or in your code and there's nothing I can do about it.
And no need to report Qt version, wheels have Qt 4.8.7 embedded inside them. They do not use your system's Qt version.
Are you sure you are using the prebuilt wheels?
braindevices commentedon Sep 12, 2017
yepp, using prebuilt wheels. It is on ubuntu 14.04
skvark commentedon Sep 12, 2017
Works fine on Ubuntu 14.04:
Can you post more code?
TechnoConserve commentedon Sep 22, 2017
I get the same error when attempting
cv2.namedWindow('test', cv2.WINDOW_AUTOSIZE), but only when using python3.5I'm on Ubuntu 16.04.
techdragon commentedon Oct 4, 2017
@braindevices @TechnoConserve can you provide more information about your Ubuntu environment, the output of
which -a python3,which -a pip,pip freeze,env(Always remember to check for any secret information that shouldn't be shared such as API keys or other items before you post the output ofenv) , andapt list --installedwould all prove useful.TechnoConserve commentedon Oct 4, 2017
That does seem puzzling to me since it only picked up pip in one of my virtual environments regardless of whether I have the opencv virtual environment active or not.
dzimmerer commentedon Oct 20, 2017
Same error (also on 16.04 with python 3.5)
djokjulapfe commentedon Oct 21, 2017
Same error on Ubuntu 16.04 with python 3.5. Beaks at cv2.imshow('Test', img)
sibojia commentedon Nov 15, 2017
Same error on Ubuntu 16.04 with python 2.7. Prints hundreds of error:
When calling cv2.waitKey() for the first time in a process. No other effects but the messages are very annoying.
cv2.__version__ = 3.3.0ridho9 commentedon Nov 19, 2017
Same here, opencv 3.3.0 and ubuntu 16.04
Trying
cv2.namedWindow('test', cv2.WINDOW_AUTOSIZE)with 3.3.0.10 returns the same QObject error, but using 3.2.0.8 returnsAnd I already have installed libgtk2.0-dev and pkg-config
ibrmora commentedon Dec 11, 2017
Same here, opencv 3.3.0.10 and ubuntu 16.04 with python 3.5.2 cv2.imshow("image", image)
saeedranjbar12 commentedon Jan 9, 2018
GUI problem with opencv 3.4.0 and ubuntu 16.04 - python 2.7
caixiaofan commentedon Jan 18, 2018
First, uninstall any versions of OpenCV you may have installed. If you installed using pip:
sudo pip uninstall opencv-python
Next, try installing OpenCV using your Linux distro's package manager. For Ubuntu/Debian, this is:
sudo apt-get install libopencv-dev python-opencv
copy from https://reformatcode.com/code/python/how-to-fix-the-error-quotqobjectmovetothreadquot-in-opencv-in-python
sibojia commentedon Jan 19, 2018
@caixiaofan This simply lets you use the opencv binding shipped in apt-get and stop using this repo. IMHO issues in this repo should focus on how to solve problems in this library.
68 remaining items
skvark commentedon Apr 7, 2020
It's the same major version so I assume it should have better compatibility. But of course there might be still some conflicts.
Edit: by the same version I mean that most of the systems use Qt5 nowadays. Qt4 is very old and the issues might be related only to Qt4 versions.
anik-kucse commentedon Apr 7, 2020
Thanks @NikkoWei. As I don't want to break my KDE DE I followed your instruction. test code runs perfectly.
hedoluna commentedon Apr 28, 2020
you saved my day!
native-api commentedon Apr 28, 2020
FYI, it is possible to link to Qt statically, and we would have to either
opencv-pythonand OpenCV source code (and require anyone else who conveys it to do the same) -- i.e. relicenseopencv-pythonas strong copyleft; orFor the 2nd option,
cmake-builddirectory tree, without the resulting Python module, would qualify. In essence, we need the makefiles to pick up the object files without recompiling them and perform linking for whatever links to Qt and all the way up to the extension module as usual. Not sure if CMake-generated makefiles can do that, or they would complain and require OpenCV sources as well to check if the object files are up to date.opencv-pythonusers somehow -- e.g. at Github releases page (for at least 3 years since release date).LICENSE-3RD-PARTY.txtwould need to refer to that location in its Qt section.opencv-pythonwould have the same obligation and would either have to rely on us, or (e.g. if they make modifications), provide such an archive themselves and updateLICENSE-3RD-PARTY.txtaccordingly.I.e. this is not any easier at all than providing the source code in the first place.
So, I conclude that it would be much easier to update OpenCV to support namespaced Qt -- especially since supporting it is pretty straightforward -- and link against such a Qt.
freakabcd commentedon Jul 26, 2020
I don't have segfaults or crashes; the window just shows up with no content (black bar?) when trying to
imshowwith the following code:with the aforementioned moveToThread messages:
/tmp/foo.pngis a colour image of size 512x512.I am on a Manjaro system with python 3.8.3, opencv-python 4.3.0.36, KDE and Qt5 (although this should not matter as opencv-python ships with own version of Qt). Looking through the LD_DEBUG output, I can see the system Qt libs being loaded as a result of an indirect dependency from the opencv-python shipped Qt libs!
As you can see, the opencv-python provided libQtCore is dynamically loading this
libqgif.sobecause it is present in some known path to it/usr/lib/qt4/plugins/imageformats. Given that @areche mentions/usr/lib/kde4/plugins/styles/breeze.sobeing loaded on their system, it could be that the 4.8.7 Qt shipped with opencv-python is not built correctly to ignore loading plugins from well known "system" paths. I am not even sure if such an option exists in the Qt build configuration as it has been many years since I have built Qt from source.It would be great if some of the people on this thread with the same issue can check if they have the
/usr/lib/qt4/pluginsor/usr/lib/kde4/pluginspaths showing up in their debug logs (LD_DEBUG=all python myfile.py). If other people can confirm one (or both) of these paths is appearing in their output, someone can check if there is a Qt build config to get rid of searching system paths for plugins to load dynamically.skvark commentedon Jul 28, 2020
@freakabcd See #362
The latest issue with Qt4 is related to the
manylinux2014upgrade. I had to useqt-develdirectly from CentOS 7 repos because there were some compiler related issues when I tried to compile Qt4 manually. In oldermanylinux1releases Qt4 was compiled manually. Please check the Dockerfiles in the docker folder in this repo for more info. I'll try to upgrade to Qt5 before next release which hopefully solves some of these issues. Plugins path can be set as an env var in Qt5 (like it is set currently in macOS builds in__init__.py), but not in Qt4 based on some fast searches I did earlier.skvark commentedon Aug 9, 2020
Starting from 3.4.10.37 and 4.3.0.38 the pre-built wheels will include Qt 5.15 which has been built in a namespace so the conflict issue should be fixed. The new releases should be up in the next 24 hours. However, please note that I cannot guarantee that the wheels will work on all GNU/Linux systems. The new releases will include also source distributions which should allow to build the wheels locally if you encounter issues with the OpenCV GUI functions.
joelcma commentedon Sep 4, 2020
I would just like to add that I get this same error on 4.3.0.38 and forward but not on 4.3.0.36. I'm running Elementary OS 5.1.7 Hera (Ubuntu based).
I tried updating because cv2.imshow wasn't showing all of my images properly (some were just showing a small box instead of the image) and after updating they show as they should but I'm getting the same QObject::moveToThread error.
skvark commentedon Sep 4, 2020
@joelcma Yeah, that "small box" bug was this one which was also caused by a Qt conflict: #362
Can't help much with that QObject::moveToThread error. Just make sure that your Python environment is consistent and you have removed all old versions of
opencv-pythonfrom there. I have done everything I can to fix the issue.parluo commentedon Nov 27, 2020
It seem that I soved
QObject::moveToThread: Current thread is not the objects thread. Cannot move to target thread, byconda uninstall pyqt. But I don't make sure its feasibility. And I found the QT about libs in/usr/lib/x86_64-linux-gnuwhill be removed after the commond and every thing is fine now.js899 commentedon Dec 2, 2020
It didn't work for me, I have to submit a project but nothing seems to be working. I have Ubuntu 20.04 LTS, working in Spyder but unable to take videocapture. Please help.
GhostDog98 commentedon Dec 19, 2022
What do we do if we are still having this issue? (version 4.6)
Coderx7 commentedon Sep 1, 2023
For those having this issue in Anaconda installation, just
pip uninstall your opencv-python, and install opencv using conda :that should fix your problems.
Update environment configuration