Разница между "import cv" и "import opencv.cv" с использованием Python + OpenCV? - PullRequest
3 голосов
/ 04 декабря 2010

Я пытаюсь использовать OpenCV с Python и конвертировать некоторый код C ++. Во всяком случае, если я сделаю:

import cv
img = cv.LoadImage('image.jpg')

Всё в порядке. Или:

import opencv.cv as opcv
size = opcv.cvSize(40, 50)

Но в любом случае, модуль cv не имеет структуры данных cvSize, а opencv.cv не имеет LoadImage. Итак, что же конкретно имеет каждый модуль? Я попытался посмотреть в документации, но не смог ее найти. Я должен использовать это как это или моя конфигурация неправильно настроена?

Ответы [ 2 ]

2 голосов
/ 06 декабря 2010

Реальный ответ: :), что оба "import opencv.cv" или "из opencv import cv" являются импортами обертывания старого стиля.

Начиная с OpenCV 2.0, используется обтекание Python нового стиляи стиль, который вы должны использовать, выглядит следующим образом:

# import only cv, no opencv
# this also brings in sub modules such as highgui
import cv
# no "cv" prepended before all method names
src_mat = cv.LoadImageM('yourfilename.png', cv.CV_LOAD_IMAGE_GRAYSCALE)
# let's show the image in a window
cv.NamedWindow('your name', 1)
cv.ShowImage('your name', src_mat)
cv.WaitKey

Обертки старого стиля, использующие SWIG, обертки нового стиля, судя по исходному коду opencv 2.2, кажутся быть самодельным.

0 голосов
/ 04 декабря 2010

С:

import cv 

Вы импортируете модуль cv, откуда бы он ни находился, в каталогах поиска модулей python. Это может быть другая версия модуля, хранящаяся где-то за пределами пакета opencv, как это выглядит в данном случае.

Но с:

import opencv.cv

Вы явно импортируете версию cv для пакетов opencv, т.е. в каталог установки для пакета opencv. Эта версия почти гарантирует, что у вас есть та, что из пакета opencv, и похоже, что она использует синтаксис:

from opencv import cv
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...