Стоит задача написать прикладную программу на WinForms которая осуществляет контроль доступа с использованием библиотеки OpenCV для дипломной работы, то есть есть некий интерфейс, в котором будет выводиться информации о человеке по идентифицируемую лицу, информация о человеке хранится в БД. В процессе обучения писал простенькие программы на Java, C, C#. На C и C# имею представления как работать с библиотеками(в частности с MySql), однако в написание на C++ опыта не имею от слова совсем. Следовательно стал выбор, писать программу на C# с использованием OpenCVSharp обвёртки или использовать нативный С++ c нативной OpenCV и освоить основы плюсов в процессе. Собственно сами вопросы:
1. Если невзирать на опыт, выбор каких инструментов более оптимален для решения поставленной задачи.
2. Если будут выбраны C# и OpenCVSharp - чем обосновать свой выбор(думаю, если сказать, что я выбирал ту платформу с которой знаком было бы как-то не корректно)?
На С++ будет работать быстрее(если правильно написать).
На C# будет проще написать и быстрее написать.
Я бы для такой задачи выбрал бы связку на C#:
1)sqllite или mssql express в качестве бд. Sqllite если все данные хранятся локально.
2) Для работы с бд в c# есть entity framework
3) В качестве библиотеки компьютерного зрения я бы выбрал EmguCv. (Почти тоже самое, что и OpenCVSharp, но документация лучше, поддерживается лучше и в общем информации больше)
4) Ну и в качестве интерфейса можно использовать winforms, хотя я бы написал на wpf
Обосновать такой выбор можно сокращением времени разработки.
По вопросу 1: Если бы это был реальный проект, то скорее всего часть для обработки изображений была бы написана на c++, а интерфейс на c#+wpf или с помощью какого нибудь фрейм ворка типа react.
На счёт EmguCV согласен, но там что-то с лицензией для меня не ясно. Проект будет внедрен для вузовского объекта, по этому рассматривал именно OpenCVSharp, она совсем бесплатная для любого вида использования. По поводу БД, думаю всё же MySQL взять, так-как с ним уже работал(Есть ощутимая разница между mssql и mysql?). WPF смотрится крайне сочно, но опять же, не работал с WPF по этому есть небольшой страх не успеть всё сделать вовремя и красиво. Уххх и темку себе выбрал)
SingularityNRN, у EmguCV лицензия GNU GPL версии 3, если не ошибаюсь.
Если проект не распространяется за пределами ВУЗа, то код проекта не нужно раскрывать. Хотя, не думаю, что это может представлять проблему.
Роман Мирр, SingularityNRN, по поводу mysql vs mssql. Вся прелесть mssql в данном случае в том, что можно использовать entity framework и не изобретать велосипеды для общения с бд.
По поводу лицензии Emgu CV вам уже ответили.
А по поводу wpf vs winforms. То красивее и современные конечно wpf, но и на winforms все можно сделать. Если сроки пожимают, то делайте на там, что знаете лучше.
Роман Мирр, По поводу SqLite, она же встраиваемая, по этому серверная СУБД мне видится более подходящим выбором, обуславливая это надёжностью хранения данных. К примеру у ребят сломается ЖД, они его меняют, ставят программу и просто подключаются к субд на удалёнке и у нас остается тот же набор данных о людях с их лицами. Возможно даже хранение пользовательских настроек самого приложения возложу на СУБД. В любом случае спасибо за ответы, разберусь с условиями лицензии EmguCV, если там действительно всё так как вы говорите, то обязательно пересяду на EmguCV.
Евгений, EF очень интересный инструмент, обязательно ознакомлюсь с ним, однако БД для диплома в любом случае придётся проектировать на "бумажке", то есть составлять логические и концептуальные модели, после уже создание самой БД. Когда бд сформирована, нужно расписать все хранимые процедуры и триггеры, а так же запросы(даже запросы на создание самих таблиц). Так что не думаю что буду использовать фреймворк, но в любом случае спасибо
Работать с C# будет удобнее (привычнее). А работать над OpenCV можно с оберткой Emgu CV.
SQLite (SQLite-net) должна хорошо подходить в качестве СУБД.
На С++ вряд ли будет работать программа ощутимо быстрее, поскольку узким горлышком вряд ли будет именно язык реализации. Считаю, что даже на Ruby будет работать достаточно быстро, поскольку вся обработка ложится на саму OpenCV.