[OpenCV and Python 2] "No module named cv_bridge_boost" on Windows
I am writing a python script on Windows, which uses the package cv_bridge
. I already have installed Python 2.7.18
and pip
in Windows 10, as well as OpenCV (cv2
) and the package cv_bridge
.
I can import OpenCV without problem in my python script by doing import cv2
The problem comes with the following line:
from cv_bridge.boost.cv_bridge_boost import getCvType
It returns the following error:
ImportError: No module named cvbridgeboost
The way I used to install cv_bridge
was by installing the setup.py
of the package
(https://github.com/ros-perception/vision_opencv)
Then, I realized that this method didn't create any boost.cv_bridge_boost
inside my Python path (C:\Python27\Lib\site-packages\cv_bridge
). So, what I did, was to seach in my Ubuntu System (where the package cv_bridge
works fine), and copy the missing files.
Finally, I ended up having in my C:\Python27\Lib\site-packages\
the following: a cv2
folder which contains all OpenCV files, and a cv_bridge
folder (the package). Inside, a folder boost
with the files __init__,py
and cv_bridge_boost.so
.
I though that was the correct way, but even having the file, the script is still returning the same error.
By searching I saw that the problem is probably in this last file (cv_bridge_boost.so
), but until now I just found solutions for MacOS. What about Windows? Did someone have a problem with this file before? Thank you in advance.
Asked by Eduardo Alvarado on 2018-09-04 04:43:56 UTC
Comments
You tagged this as Kinetic: just making sure, you do have a ROS 1 Kinetic install on Windows?
Asked by gvdhoorn on 2018-09-04 05:03:08 UTC
No, it´s not installed. The Python script that I am writing doesn't need of
roscore
to work. However, I need single packages from Kinetic for the script, so I´ve been installing them (such as rosbag). The script is totally independent fromroscore
.Asked by Eduardo Alvarado on 2018-09-04 06:09:26 UTC
.so
files are shared object files for Linux based platforms, you cannot use those on Windows.You'll have to somehow get the
cv_bridge_boost
libraries built on Windows. That is what I meant with my question "you have installed * on Windows?".Asked by gvdhoorn on 2018-09-04 11:10:34 UTC
Understood then. Since I don´t have ROS installed on Windows, only the packages that I build on Ubuntu, is there any possibility to obtain such libraries to use the package
cv_bridge
on Windows? There must be a way, but oddly I don't find any.Asked by Eduardo Alvarado on 2018-09-05 00:29:45 UTC
I'm not terribly familiar with the build process of those
cv_bridge_python
libraries, but you'd probably have to somehow get them build. That may not be trivial (as C++<->Python integration never is, and you're doing it on an 'unsupported' platform). I'm sorry I can't help you with this now.Asked by gvdhoorn on 2018-09-05 01:24:03 UTC
Perhaps you can tell us what you ultimately want to do. This might be an xy-problem and we might be spending time on solving something that isn't needed.
Asked by gvdhoorn on 2018-09-05 01:24:56 UTC
My Python script which runs on Windows, takes video-data from a .bag file and shows it on a GUI, which uses QWidgets (PyQT). I already managed to use the rosbag API to take the video, but in order to display it I need to convert it by using OpenCV.
Asked by Eduardo Alvarado on 2018-09-05 02:22:34 UTC
Here´s where
cv_bridge
comes out, linking the .bag file and OpenCV. In my script I use a function which belongs to the package (imgmsg_to_cv2
), which takes the image from the .bag and converts it to cv2, and it needs to accesscv_bridge_boost
. That would be a preview about what my script doesAsked by Eduardo Alvarado on 2018-09-05 02:27:28 UTC
Thank you anyways @gvdhoorn for the help! If there is any other way to do this, I will be happy to hear it as well.
Asked by Eduardo Alvarado on 2018-09-05 02:29:15 UTC