【问题标题】:How to run the code using two OpenCV versions python at the same time?如何同时使用两个 OpenCV 版本的 python 运行代码?
【发布时间】:2020-10-12 01:06:51
【问题描述】:

我的电脑上安装了两个版本,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

抱歉,解释太长了

任何帮助,提前谢谢你。

【问题讨论】:

    标签: python opencv4 opencv3.3


    【解决方案1】:

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

    【讨论】:

      最近更新 更多