Как связать openCv с Python3 в Mac OS - PullRequest
0 голосов
/ 21 декабря 2018

У меня есть две версии python в моей Mac OS, первая python2.7, которая по умолчанию поставляется с системой.Позже я установил python3.7, который я использую большую часть времени.

Я недавно установил openCV, используя homebrew.Когда я использую openCV с python2.7, он работает нормально.

Но проблема в том, когда я пытаюсь использовать его с python3.Импорт cv2 в python3 выдает ошибку: ModuleNotFoundError: Нет модуля с именем 'cv2'

Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 03:03:55) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "copyright", "credits" or "license()" for more information.
>>> WARNING: The version of Tcl/Tk (8.5.9) in use may be unstable.
Visit http://www.python.org/download/mac/tcltk/ for current 
information.

>>> import cv2
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
import cv2
ModuleNotFoundError: No module named 'cv2'
>>> 

Могу ли я что-нибудь сделать, чтобы связать установленный openCV с python3 ??

Спасибо за помощь

1 Ответ

0 голосов
/ 31 декабря 2018

Извините, я не могу дать вам подробности, потому что ваши настройки не идентичны моим, но я уверен, что мы можем помочь вам разобраться.

Во-первых, когда вы устанавливаете пакеты, такие как OpenCV они, как правило, создают каталог где-то с именем lib, который содержит функции C / C ++, которые вы можете вызывать из этого пакета.Внутри этого каталога вы обычно находите «библиотеки общих объектов» , которые традиционно заканчиваются на «XXX.so» в macOS.Что еще более интересно, они также содержат подкаталог с именем site-packages, который содержит привязки Python (ссылки).Итак, в моей системе, которая, вероятно, отличается от вашей, я могу найти все эти site-packages каталоги с:

find / -type d -name site-packages 2>/dev/null

Пример вывода

/usr/local/lib/python3.7/site-packages
/usr/local/lib/python2.7/site-packages
...
...
/usr/local/Cellar/tbb/2018_U5/lib/python2.7/site-packages
/usr/local/Cellar/vips/8.6.5/lib/python3.7/site-packages

Надеюсь, вы видите, что /usr/local/lib/python3.7/site-packages выглядит очень вероятным кандидатом на то, где должны быть все привязки Python v3.7 для OpenCV .

Хорошо, так что теперь мы знаем, как найтипривязки Python, мы должны сообщить Python эту информацию.Как?Что ж, нередко, Python просматривает переменную окружения, называемую PYTHONPATH, чтобы найти свои вещи.Таким образом, используя наши навыки и суждения, мы должны объединить то, что мы нашли в первом шаге, с тем, что мы теперь знаем из второго шага.Итак, мы делаем:

export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python3.7/site-packages

И все должно работать.Все, что нам нужно сделать, это указать это в нашем профиле входа в систему (вероятно, $HOME/.profile), и мы будем готовы к работе при каждом входе в систему.

...