OpenCV 2.3.1 Python с Eclipse показывает ошибки synatx, но все еще работает - PullRequest
7 голосов
/ 17 февраля 2012

Я следовал этому руководству , чтобы настроить OpenCV 2.3.1 в Python 2.7 с Eclipse.

Я также скопировал библиотеки в папку python:

http://i.snag.gy/J9RrC.jpg

Вот моя программа Hello World, которая работает правильно (создает именованное окно и отображает изображение), но Eclipse по-прежнему показывает синтаксические ошибки

Eclipse showing syntax errors

каждая ошибка говорит «Неопределенная переменная из импорта»

Вот мои настройки Python для этого проекта:

http://i.snag.gy/KBXiB.jpg http://i.snag.gy/KfTpF.jpg

Я неправильно настроил PythonPath? Как я могу заставить Eclipse работать должным образом?

Спасибо

Ответы [ 3 ]

5 голосов
/ 13 июля 2012

У меня была такая же проблема, все работало правильно, хотя везде были неопределенные ошибки импорта. В конце концов я решил эту проблему, добавив 'cv' в список принудительных встроенных команд: Window> Preferences> Pydev> Interpreter - Python> принудительные встроенные функции> New.

Вот как я наткнулся на решение:

Как использовать завершение кода в Eclipse с OpenCV

Я надеюсь, что это может помочь вам тоже.

2 голосов
/ 07 февраля 2013

РЕДАКТИРОВАТЬ: FYI, в соответствии с верхним ответом здесь , если вы только начинаете (как я!), Почти наверняка лучше использовать интерфейс cv2 вместо старого, представленного в cv2.резюме.Автор этого ответа, Абид Рахман, имеет несколько учебных пособий , которые выглядят довольно неплохо.(конец EDIT)

Я использовал инструменты Debian для установки пакета python-opencv.Каталога ... / dist-packages / opencv не было найдено, и файл cv.py содержал только:

from cv2.cv import *

Я довольно неопытен с Python и полностью так с доступом Python к внешнимбиблиотеки, так что это выглядело как своего рода обходной путь, связанный с этим.Видимо, не так.Я перешел по ссылке Каспера выше и нашел решение, которое он использовал (который работал для меня), но я не был счастлив использовать «принудительные встроенные функции», когда не был полностью уверен в последствиях.

Однако,второй, более низкий рейтинг ответа есть мое предпочтительное решение.Вместо

import cv

я использую

import cv2.cv as cv

Из того, что я могу сказать, это просто удаляет посредника cv.py из цепочки импорта, если это имеет смысл.При сохранении / закрытии / перезагрузке моего скрипта Eclipse распознал cv.LoadImageM как определенный и автоматически завершал другие действия из OpenCV.

Я воспроизводил этот ответ здесь, потому что он кажется мне чище, и я сначала нашел этот вопрос, когдаЯ искал ответ на ту же проблему.

0 голосов
/ 07 марта 2012

Было бы полезно показать полученную ошибку и ваш код.Тем не менее, я подозреваю, что проблема в том, что синтаксические ошибки, которые показывает PyDev, основаны на его собственном анализе кода, который намного проще, чем реальный интерпретатор python.Если ваш код выполняется, то должны быть определены явно неопределенные переменные, но анализатор PyDev просто не может их видеть и сообщает о них как «неопределенные».

Причина этого заключается в том, что OpenCV не определяет явным образом свои переменные способом, который может быть прочитан PyDev.К сожалению, у меня нет простого решения.Обычно я решаю проблему с помощью from ... import ..., чтобы ошибка появлялась только один раз.Если вы хотите, вы можете написать модуль-обертку, который явно импортирует переменные в локальное пространство имен, а затем импортируйте этот модуль.

...