2015-08-17 3 views
2

Я использую машину Windows 10 и установил Python, numpy и OpenCV от the official link с использованием предварительно созданных двоичных файлов. Я могу успешно импортировать numpy и cv2, но получить ошибку при попытке импортировать cv.Не могу импортировать cv на Opencv2

import cv2 

import numpy as np 
import sys 
import cv 

def diceroll(): 
    rng = cv.RNG(np.random.randint(1,10000)) 
    print 'The outcome of the roll is:' 
    print int(6*cv.RandReal(rng) + 1) 
    return 

diceroll() 

ImportError: Нет модуль с именем резюме

P.S: Это не возможно дубликат this question. Пользователь в рассматриваемом вопросе получает ошибку файла dll, в то время как я застрял с ошибкой импорта для cv.

+0

Там нет верхнего модуля 'cv' уровня. Удалите оператор 'import cv' и, где бы вы ни находились, используя' cv', замените его на 'cv2.cv'. – Jaime

+0

@Jaime: Спасибо, Джейми, но это не сработало для меня. Он запрашивает, что объект AttributeError: module не имеет атрибута cv 'для строки' cv2.cv.RNG (np.random.randint (1,10000)) ' –

+0

Какую версию OpenCV вы используете? Я думаю, что они изменили пространство имен Python в 3.0, поэтому эти функции, вероятно, непосредственно находятся в 'cv2'. Работает ли 'cv2.RNG'? – Jaime

ответ

4

После вопросительно на OpenCV сообщества, я узнал, что старое резюме или cv2.cv апи был полностью удален из OpenCV3

Невозможно использовать функцию RNG из cv через opencv3. Вместо этого вы можете использовать numpy.random для той же функциональности.

Ссылка: мой question на OpenCV сообщество

1

Это где-то там, просто нужно его искать. Попробуйте запустить что-то вроде следующего в вашей системе:

from types import ModuleType 

def search_submodules(module, identifier): 
    assert isinstance(module, ModuleType) 
    ret = None 
    for attr in dir(module): 
     if attr == identifier: 
      ret = '.'.join((module.__name__, attr)) 
      break 
     else: 
      submodule = getattr(module, attr) 
      if isinstance(submodule, ModuleType): 
       ret = search_submodules(submodule, identifier) 
    return ret 

if __name__ == '__main__': 
    import cv2 
    print cv2.__version__ 
    print search_submodules(cv2, 'RNG') 

На моей системе, это печатает:

2.4.11 
cv2.cv.RNG 
+0

Я получаю то, что вы делаете :). Он печатает 3.0.0 и ищет cv, но не может его найти. Он заканчивается в «RuntimeError: максимальная глубина рекурсии, превышаемая в cmp». Должен ли я добавлять какой-то путь или задавать переменные среды? (Я не задал ранее и просто следил за официальной ссылкой, упомянутой выше.) –

+0

В моей системе, если у меня есть поиск чего-то несуществующего, он возвращает 'None' довольно быстро, т.е.' search_submodules (cv2, 'i_dont_exist') '. – Jaime

Смежные вопросы