2

我的电脑上安装了两个版本,OpenCV 3.3.1 与 ROS 库(动力学)一起使用,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

抱歉,解释太长了

任何帮助,提前谢谢你。

4

1 回答 1

0

我不认为你可以同时使用它们,因为它不是这样设计的。很抱歉,如果我无法如您预期的那样回答。我希望你能解决这个问题,以避免这种问题。:)

于 2020-06-22T08:32:15.377 回答