@Abbylon

На каком языке лучше работать с OpenCV? Нейросетями? OpenGL?

Преподаватель информатики дал на лето поиграться с OpenCV, нейросетями и OpenGL.

Используя OpenCV python, я написал два скрипта для распознавания чёрных и цветных цифр на белом фоне. Когда я его спросил про numpy (может сначала с ним поиграться, так как без него в питоне с OpenCV как без рук), он сказал, что его на нормальные задачи уже не хватит, тогда надо на с++ переезжать. Но при этом он сказал, что с отладкой я замучаюсь на пюсах.

Порыскав в интернете, я собрал информацию по этому поводу и составил преимущества и недостатки обоих языков в разработке.

Я сделал вывод о том, что питон проще как язык, на нём быстрее идёт отладка и разработка, много вспомогательных библиотек, практически не чувствуется работа на низком уровне. Но при этом numpy негоден для серьёзных задач, в том числе для задач в реальном времени(камеры и прочее), а мне это потребуется для моих проектов.

На С++ код работает быстрее, OpenCV изначально для плюсов сделан, соответсвенно возможностей и полезных функций там будет больше, с камерами удобнее работать, работа на низком уровне позволяет лучше понять внутренности библиотеки и принципы её работы, и информация с документацией шире и качественнее. Но при этом разработка дольше идёт, сложнее отлаживать и сам по себе язык сложнее.
И мне было бы хорошо услышать мнение других людей по этому поводу.
Вы как считаете?

Про нейросети и OpenGL я ещё не изучал, поэтому тут сначала хотел бы ваше мнение услышать. Какой язык вы считаете лучшим для использования для OpenCV и этих тем? Почему?
  • Вопрос задан
  • 1057 просмотров
Пригласить эксперта
Ответы на вопрос 2
sergey-gornostaev
@sergey-gornostaev
Седой и строгий
Numpy написан на C и очень резв. Его может не хватать только в системах реального времени с критичностью к миллисекундам, типа автомобильных автопилотов.
Ответ написан
@res2001
Developer, ex-admin
Ваши суждения правильные.
Возможен вариант реализации наиболее узких мест на С/С++ как модулей питона.
Когда используете numpy не забывайте всегда работать с numpy массивами, иначе теряется производительность numpy. Используйте для работы с ними функции numpy, а не питоновские. Numpy array - похожи на Си массивы, поэтому передавать их в модуль на Си эти массивы достаточно просто (обратное то же верно). Старайтесь сводить к минимуму вычисления непосредственно на питоне - используйте возможности numpy, scipy, opencv.

PS: У меня был опыт написания модуля для отображения информации на питоне. Весь основной код был реализован на Си - много вычислений с большими объемами данных (не opencv).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы