如何同时使用两个OpenCV版本的python运行代码?

2024-09-25 02:35:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我的计算机上安装了两个版本,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

对不起,解释得太久了

任何帮助,提前谢谢你


Tags: pathinimportversionlibpackagesusrsys