我的计算机上安装了两个版本,OpenCV 3.3.1正在使用ROS库(kinetic),OpenCV 4.2与3.3.1相比有一些优势。所以,我想两者都用
简单代码:
import cv2
print (cv2.__version__)
import sys
ros_path2 = '/usr/local/lib/python2.7/site-packages'
ros_path3 = '/usr/lib/python2.7/dist-packages'
if ros_path2 and ros_path3 in sys.path:
sys.path.remove(ros_path2)
sys.path.remove(ros_path3)
import cv2
print (cv2.__version__)
输出为:
3.3.1
3.3.1
如果我把前两行注释掉
# import cv2
# print (cv2.__version__)
import sys
ros_path2 = '/usr/local/lib/python2.7/site-packages'
ros_path3 = '/usr/lib/python2.7/dist-packages'
if ros_path2 and ros_path3 in sys.path:
sys.path.remove(ros_path2)
sys.path.remove(ros_path3)
import cv2
print (cv2.__version__)
输出为:
4.2.0
我的目标是使用OpenCV 4.2的一些优势,例如:from cv2.xfeatures2d import matchGMS
更多解释:
如果我将最后一行添加为:
import cv2
print (cv2.__version__)
import sys
ros_path2 = '/usr/local/lib/python2.7/site-packages'
ros_path3 = '/usr/lib/python2.7/dist-packages'
if ros_path2 and ros_path3 in sys.path:
sys.path.remove(ros_path2)
sys.path.remove(ros_path3)
import cv2
from cv2.xfeatures2d import matchGMS
print (cv2.__version__)
输出为:
3.3.1
Traceback (most recent call last):
File "/home/redhwan/learn2.py", line 11, in <module>
from cv2.xfeatures2d import matchGMS
ImportError: cannot import name matchGMS
如果我再次注释掉前两行:
# import cv2
# print (cv2.__version__)
import sys
ros_path2 = '/usr/local/lib/python2.7/site-packages'
ros_path3 = '/usr/lib/python2.7/dist-packages'
if ros_path2 and ros_path3 in sys.path:
sys.path.remove(ros_path2)
sys.path.remove(ros_path3)
import cv2
from cv2.xfeatures2d import matchGMS
print (cv2.__version__)
工作正常,输出为:
4.2.0
对不起,解释得太久了
任何帮助,提前谢谢你
我不认为你可以同时使用它们,因为它不是这样设计的。如果我不能像你预料的那样回答,我很抱歉。我希望你能努力解决这一问题,以避免此类问题。:)
相关问题 更多 >
编程相关推荐