I have first installed openCV from source using this script. When I tested it was working well.
After I installed ROS kinetic, and open python3
and run import cv2
, got the following error:
Python 3.5.2 (default, Nov 17 2016, 17:05:23)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: /opt/ros/kinetic/lib/python2.7/dist-packages/cv2.so: undefined symbol: PyCObject_Type
It looks like this problem is caused by ROS adding /opt/ros/kinetic/lib/python2.7/dist-packages
to the python path. This actually happens when you activate ROS with the command source /opt/ros/kinetic/setup.bash
. This line is often added at the end of your bashrc file, in /home/username/.bashrc
.
A workaround is to remove this line from the bashrc file. This way the python3 opencv packages will be correctly used, and you can still run source /opt/ros/kinetic/setup.bash
to use ROS. However, this does mean you cannot use ROS and python3 from the same environment.
Hopefully someone can come up with a better answer, but this should work until then.