Setup: Trying to do python development with Anaconda 3, PyCharm Community Edition (2023.3.2) on Ubuntu (22.04.3 LTS) and a lot of existing packages including opencv-python. I was having the problem described in question
Python OpenCV Error: Current thread is not the object's thread
but is really a new question because I apparently have a configuration problem of some sort. In short, CV2 calls in Python 3 result in an error that looks like this:
QObject::moveToThread: Current thread (<address>) is not the object's thread (0x1e57d70).
Cannot move to target thread (<address>).
The recommended solution that seemed to help other folks was to first uninstall the opencv-python package and then reinstall it having the package rebuilt on the target platform with this command:
pip install --no-binary opencv-python opencv-python
While trying this, the build gets to 100% when I get a somewhat implausible error that Python.h can't be found. The full error is pasted below but a little background might help. While I'm not new to Linux, I'm a little new to Ubuntu and newer still to development (more of a Systems than Software Engineer). If these installers (apt, apt-get, pip et al.) can't resolve the dependencies and paths, it will be difficult for me to figure it out. The PyCharm package view seems to be pretty good and its connection to conda seems to be okay (simple programs work okay) but something underneath is not right. The connection to gcc perhaps? I appreciate any and all suggestions and offers of assistance. Thanks in advance.
-Rocky714
Note: Class cv::Feature2D has more than 1 base class (not supported by Python C extensions)
Bases: cv::Algorithm, cv::class, cv::Feature2D, cv::Algorithm
Only the first base class will be used
Note: Class cv::detail::GraphCutSeamFinder has more than 1 base class (not supported by Python C extensions)
Bases: cv::detail::GraphCutSeamFinderBase, cv::detail::SeamFinder
Only the first base class will be used
[100%] Built target gen_opencv_python_source
[100%] Building CXX object modules/python3/CMakeFiles/opencv_python3.dir/__/src2/cv2.cpp.o
In file included from /tmp/pip-install-s65xv3yn/opencv-python_f0507c14ed7b488894517f39f468dff8/opencv/modules/python/src2/cv2.cpp:5:
/tmp/pip-install-s65xv3yn/opencv-python_f0507c14ed7b488894517f39f468dff8/opencv/modules/python/src2/cv2.hpp:20:10: fatal error: Python.h: No such file or directory
20 | #include <Python.h>
| ^~~~~~~~~~
compilation terminated.
gmake[2]: *** [modules/python3/CMakeFiles/opencv_python3.dir/build.make:76: modules/python3/CMakeFiles/opencv_python3.dir/__/src2/cv2.cpp.o] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:2304: modules/python3/CMakeFiles/opencv_python3.dir/all] Error 2
gmake: *** [Makefile:166: all] Error 2
Traceback (most recent call last):
File "/tmp/pip-build-env-deg9zvgy/overlay/lib/python3.10/site-packages/skbuild/setuptools_wrap.py", line 674, in setup
cmkr.make(make_args, install_target=cmake_install_target, env=env)
File "/tmp/pip-build-env-deg9zvgy/overlay/lib/python3.10/site-packages/skbuild/cmaker.py", line 697, in make
self.make_impl(clargs=clargs, config=config, source_dir=source_dir, install_target=install_target, env=env)
File "/tmp/pip-build-env-deg9zvgy/overlay/lib/python3.10/site-packages/skbuild/cmaker.py", line 742, in make_impl
raise SKBuildError(msg)
An error occurred while building with CMake.
Command:
/tmp/pip-build-env-deg9zvgy/overlay/lib/python3.10/site-packages/cmake/data/bin/cmake --build . --target install --config Release --
Install target:
install
Source directory:
/tmp/pip-install-s65xv3yn/opencv-python_f0507c14ed7b488894517f39f468dff8
Working directory:
/tmp/pip-install-s65xv3yn/opencv-python_f0507c14ed7b488894517f39f468dff8/_skbuild/linux-x86_64-3.10/cmake-build
Please check the install target is valid and see CMake's output for more information.
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for opencv-python
Failed to build opencv-python
ERROR: Could not build wheels for opencv-python, which is required to install pyproject.toml-based projects