OpenCV 2.4.3 и Python

Несколько дней назад я искал хороший способ создать простую систему компьютерного зрения. Библиотека OpenCV – это то, что мне нужно, но было сложно учиться с Python, особенно после обновления OpenCV 2.4.3, имеющего очень тонкую документацию, связанную с Python. Итак, теперь я понимаю, что в OpenCV произошла куча изменений, для exaxmple

import cv 

сейчас

 import cv2 

И есть куча модулей, которые отсутствуют. Я имею в виду, да, есть примеры нового синтаксиса pythonopencv, но он очень узкий и доказал, что его трудно понять. Например: пример в официальной документации для кода Python

 cv2.cvtColor(src, code[, dst[, dstCn]]) 

Я знаю, что означает этот код и как его использовать, по крайней мере, я думаю, что знаю. Но писать исходный код и цветовой код ничего не дает мне:

  Traceback (most recent call last): File "C:\FILEFOLDER\tut.py", line 11, in <module> cv.cvtColor('proba.jpg', 'CV_RGB2GRAY') TypeError: an integer is required 

Или, если я пытаюсь написать код типа переменной:

 Traceback (most recent call last): File "C:\FILEFOLDER\tut.py", line 11, in <module> cv.cvtColor('proba.jpg', CV_RGB2GRAY) NameError: name 'CV_RGB2GRAY' is not defined 

Итак, есть ли справочный документ / учебник / учебник / руководство по Python для новейшего OpenCV с объяснениями, которые не путают новичков, подобных мне, с нежелательными примерами кода для C ++ или Java?

2 Solutions collect form web for “OpenCV 2.4.3 и Python”

Я думаю, вы принимаете это на обратном пути.

Фактически, с новым модулем cv2 OpenCV стал намного более простым по сравнению со старым cv интерфейсом. Не просто, но очень быстро и высокопроизводительно, благодаря поддержке Numpy. Дело только в том, что мы должны знать, как правильно использовать его.

Здесь вы должны использовать функцию следующим образом:

 img = cv2.imread('pic.jpg') gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) 

Я хотел бы, чтобы вы посетили один SOF, который показывает некоторое сравнение между обоими модулями: что отличается между всеми этими интерфейсами OpenCV Python?

Здесь еще один SOF, который является простой демонстрацией того, как вы можете ускорить работу с поддержкой Numpy: сравнение производительности интерфейсов OpenCV-Python, cv и cv2

Вам не нужно изучать C ++ или C для использования OpenCV, хотя C ++ является официальным языком. Тем не менее, Python-OpenCV имеет хорошую поддержку. Как только вы поймете, как использовать OpenCV, вы сможете конвертировать коды C ++ в Python самостоятельно. Затем вы также можете изучить OpenCV из учебников по C ++. Например, я начал изучать OpenCV из «Learning OpenCV» Гэри Брэдски, который полностью находится на C ++. В то время существовал только cv интерфейс.

Как вы упомянули в своих комментариях, opencvpython.blogspot.com имеет несколько вводных руководств. Я начал фокусировать новичков в OpenCV.

Кроме того, проверьте этот SOF для получения дополнительных уроков: Книги для OpenCV и Python?

Чтобы взять его под другим углом и позволить запускать старый код с новыми версиями установки OpenCV …

Во-первых, переход от cv к cv2 относится к библиотеке, использующей разные структуры данных для множества функций. Самый простой способ определить, изменилась ли функция между cv2 и cv, состоит в том, что функции cv начинаются с капитала. Переработанные функции cv2, похоже, всегда имеют первую букву в нижнем регистре. Поэтому, если вы используете старую книгу или старые примеры, вы все равно можете использовать устаревшие cv. cv теперь просто вложено в cv2. Просто используйте в верхней части своих скриптов следующее:

  import cv2 import cv2.cv as cv #required for old code not to be changed 

Это позволяет вам просто запускать старый код без его изменения. Здесь я продемонстрирую ваш вызов функции. Ты имел…

  cv.cvtColor('proba.jpg', 'CV_RGB2GRAY') 

Первое, что я замечаю, это то, что ваша функция может быть названа неправильной. (Учитывая, что первая буква функции имеет нижний регистр, она должна начинаться с cv2, а не cv). Второй – это «код», передаваемый функцией. «Коды» – это члены (кодирование noob здесь, простите меня, если какой-то мой vocab неточен) cv2 и cv, но не всегда одинаковый. У вас есть CV_RGB2GRAY. Во-первых, никаких кавычек. Это код cv 'не cv2. Также вам не хватает «cv». спереди. Чтобы продемонстрировать здесь, как я считаю, ваша функция должна быть вызвана для старой версии cv:

  cv.CvtColor('proba.jpg', cv.CV_RGB2GRAY) #Assuming you used listed imports cv2.cv.CvtColor('proba.jpg', cv2.cv.CV_RGB2GRAY) #Assuming you skipped second import 

А теперь cv2 …

  cv2.cvtColor('proba.jpg', cv2.COLOR_RGB2GRAY) 

Там вы идете, я надеюсь, что это поможет. Помните, что при запуске сценариев python вы можете вводить все, что вы не уверены, непосредственно в командной строке. Это творит чудеса, помогая мне построить мое понимание (я впервые использовал python 5 дней назад). Например, если вам интересно, почему в вашей функции требуется целое число, когда вы вводите

  cv.CV_RGB2GRAY 

прямо в командную строку python, он нажимает на вас «7» (удобно, что это int). Версия cv2 выплевывает «7L». Просто не забудьте использовать функцию WaitKey () снова и снова в той или иной форме, иначе у highgui может не быть необходимого времени для обработки некоторых команд, в некоторых ситуациях. Хорошо, что обертывает его. Извините, если я рассмотрел некоторые вещи, которые уже были охвачены или были упомянуты. Если я не стесняюсь удалить его, администраторы.

Python - лучший язык программирования в мире.