Перейти к содержимому
Compvision.ru

Король

Пользователи
  • Количество публикаций

    50
  • Зарегистрирован

  • Посещение

  • Days Won

    5

Все публикации пользователя Король

  1. Добрый день! Решил переписать алгоритм распознавания автомобильных номеров с С# на С++ (чтобы функция работала быстрее) и столкнулся с проблемой (Opencv 2.4.10) Опишу проблему: есть описание функции на С++ в открытом доступе #pragma once #ifndef ANPR_LIBRARY #define ANPR_EXPORT __declspec(dllimport) #else #define ANPR_EXPORT __declspec(dllexport) #endif #include <opencv.hpp> #include <cv.h> using namespace cv; extern "C" { ANPR_EXPORT IplImage* __stdcall ANPR_Recognize(IplImage* image); } И эта функция экспортируется в С# проект. [DllImport("ANPR.dll")] static public extern MIplImage ANPR_Recognize( MIplImage image); И не хочет работать. Видимо параметры MIplImage нужно передавать как-то подругому. Подскажите в чем моя ошибка?
  2. Здравствуйте форумчане! Возник вопрос, как обучить Tensorflow на своих картинках на C#? Весь интернет перерыл ничего толкого не нашел. На питоне пытался обучить но там сталкнулся со сложностями, на import tensorflow выдает Exception (No module _pywrap_tensorflow_internal). У меня Windows 10. Хотя поставился tensorflow без проблем и прилагающие к ниму проги. Буду благодарен за код.
  3. Делю изображение по 40 пикселей (это не важно по сколько, зеленого цвета вертикальные линии). Преобразую функцией Собеля изображение. Затем высчитываю разность соседних пикселей по горизонтали. Сглаживаю кривую (красный цвет). Затем высчитываю Максимумы (точки желтого цвета). Затем ищу, чтобы в линии было по 2 и более столбцов (считаю что это текст). Затем поиск минимумов этих максимумов (Блоки с текстом предполагаю - 2 изображение на видео). Как-то так!
  4. Моя версия распознавание российского паспорта. При распознавании букв использовал Tesseract
  5. Добрый день! Время обработки 500 мс и выше. Разрешение изображения 800х600 на Core-i3 х86. Если ты заметил он пробегает по всему файлу, чтобы постоить кривую. Переписывал на C++ эти функции. Обработка кадра существенно снизилась до 250 мс. Коммерческого продукта пока нет. Забраковали меня на работе. Пишу и развиваюсь для себя. Просто у нас на работе пока нет свой программы для видеонаблюдения - не разработали. Пользуемся сторонними, в особенноси "Интеллектом" - уж больно он "гибкий".
  6. Нашел один сайт, он даешь ему изображания, размечаешь и тренирует потом долго сам. Потом с помощью "экспорта" вынимаем файлы натренированные https://customvision.ai/ проект на С# после тренировки сети - https://github.com/daltskin/CustomVision-TensorFlow-CSharp
  7. https://dfiles.ru/files/w1gv5r2vr Скомилированнный проект с изображениями автомобилей с русскими номерами
  8. Unmanaged C++ to C#

    Получилось частично. Выше все правильно написано. И потом работаете с Маt. Переписал проблемные участки кода, когда функция пробегает по всему изображению. Код увы не остался только библиотека. Затерялась.
  9. Сегментация

    https://dfiles.ru/files/w1gv5r2vr с картинками с сайта auto-nomer.ru
  10. Кстати по поводу вагонов. Мой алгоритм справиться с нахождением области цифр. Если камера по прямым углом относительно вагона. Под углом вряд ли найдет.ф
  11. С нейросетью на много лучше вычисляет по клише букв и цифр. Вот статья - https://habr.com/post/143668/ тоже правда на C#. Я это внедрил и получил очень хороший результат. С Линуксом правда не работал и не знаю что да как там. Но это пока. В планах у меня есть научиться под Линух программировать. Увы посоветовать не могу. Кстати тот код можно перевести на C++. Я пробовал Tesseract. Номер должен быть ровно в горизонтальном положении а это не всегда находиться правильно, даже в горизонтальном положении. Пробовал по вычислением моментов - результат тоже плохой.
  12. http://www.pvsm.ru/net/274725 - моя публикация с открытым исходным кодом на C#
  13. Привет коллеги! Прошу помощи! Как написать собственную прошивку для камер Hikvision? Есть алгоритмы детектор огня, оставленных предметов, распознавание номеров, трекинг, автотрекинг. Хочу, чтобы эти алгоритмы работали в голове камеры и выдавали результат в виде текста на изображении, либо выделением области цветом. Как это сделать? Что почитать? Как нужно откомпилировать проект Opencv, чтобы его библиотеки тоже вошли в прошивку? Любой информации буду рад.
  14. Автотрекинг

    Здравствуйте форумчане! Скажите пожалуйста как сделать автотрекинг объекта (чтоб камера поворачивалась за выделенным объектом). Первый наметки сделал осталось прикрутить зуум. Не знаю пока как прикрутить зуум. Чтобы приближался к объекту. Жду вашего совета! В первой версии реализовано пока так. Есть две зоны которые находяться слева и справа. Вычисляется угол направления самого крупного объекта, потом если он зашел человек допустим в левую зону с углом направления от 225 до 315 - то поворот налево. Реализованы пока только поворот налево, направо. И работает по принципу: отследил-повернул-отследил-повернул. Вот интересные видео: https://www.youtube.com/watch?v=iU6D5WLdXMo https://www.youtube.com/watch?v=vQKGhIPiqs8 Хочу сделать что-то подобное!
  15. Автотрекинг

    Вот и сам автотрекинг. Правда цель теряет. Смысл такой если объект находится в красном квадрате то поворот не осуществляется.
  16. В футболе мне понравилась идея двух а то и трех камер, которая считает статистику (сколько человек пробежал на поле, средняя и максимальная скорость). Но когда используешь в виде трансляции с множества камер, то цель распознания сама отпадает.
  17. Tracking в баскетболе В плавание (касание рукой борта - засечка времени) Прыжки на батуте Смотрится классно.
  18. Вот нашел pdf http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.1029.5578&rep=rep1&type=pdf связанные со спортом Спортивная визуализация и статистика с помощью Kinect https://nccastaff.bournemouth.ac.uk/jmacey/MastersProjects/MSc13/19/thesis/MastersProjectFinalThesisSantosh.pdf Меня тоже заинтересовало Opencv в спорте
  19. Сегментация

    Для примера выложу свой код, как удалять не нужные блобы(Rectangle) правда пока написано только на C#. Сначало рекомендуется вычислить угол поворота изображения. А потом уже удалять прямоугольники. Функция GetRect удаляет не нужные прямоугольники за линией (зеленой). IsPlate - проверяет гражданский ли автомобиль состоящий из 8 или 9 символов. Может быть поможет мой код. p.s.Функция CLAHE - очень помогла на плохо освещенных номерах и переосвещенных. public List<System.Drawing.Rectangle> GetRect(int i, List<System.Drawing.Rectangle> rec) { float sum = 0.0f; for (int ij = 0; ij < rec.Count; ij++) { sum += rec[ij].Y + rec[ij].Height; } float sredY = sum / rec.Count; Plate.rotate2.Draw(new LineSegment2DF(new System.Drawing.PointF(0, sredY), new System.Drawing.PointF(Plate.rotate2.Width, sredY)), new Bgr(System.Drawing.Color.Green), 2); for (int kl = 0; kl < rec.Count; kl++) { if (System.Math.Abs(sredY - (rec[kl].Y + rec[kl].Height)) > 8) { rec.Remove(rec[kl]); } } float sredX = 0.0f; for (int kl = 0; kl < rec.Count; kl++) { sredX += rec[kl].Width; } sredX = sredX / rec.Count; for (int lp = 0; lp < rec.Count; lp++) { if (System.Math.Abs(sredX - rec[lp].Width) > 10 && rec[lp].Height / rec[lp].Width < 1.5) { rec.Remove(rec[lp]); } } return rec; } bool IsPlate(int i, List<System.Drawing.Rectangle> rect) { float sum = 0.0f; for (int ij = 0; ij < rect.Count; ij++) { sum += rect[ij].Y + rect[ij].Height; } float sredY = sum / rect.Count; int index = 0; for (int kl = 0; kl < rect.Count; kl++) { if (System.Math.Abs(sredY - (rect[kl].Y + rect[kl].Height)) < 8) index++; } float sredX = 0.0f; for (int kl = 0; kl < rect.Count; kl++) { sredX += rect[kl].Width; } sredX = sredX / rect.Count; int index2 = 0; for (int lp = 0; lp < rect.Count; lp++) { if (System.Math.Abs(sredX - rect[lp].Width) < 10) index2++; } if ((index == 8 && index2 == 8) || (index == 9 && index2 == 9)) return true; return false; }
  20. Сделал коллаж картинок как моя программа распознает в переосвещенной области номерного знака, засветки. Чем могу, помогу в написании проекта.
  21. Автотрекинг

    Спасибо BeS! Выручил
  22. Unmanaged C++ to C#

    Решено ВОТ С++ проект #pragma once #ifndef ANPR_LIBRARY #define ANPR_EXPORT __declspec(dllimport) #else #define ANPR_EXPORT __declspec(dllexport) #endif #include <opencv.hpp> #include <cv.h> using namespace cv; extern "C" { ANPR_EXPORT int __stdcall ANPR_Recognize(BYTE* a, int W, int H); } BYTE* imageOriginal; IplImage* Original; ANPR_EXPORT int __stdcall ANPR_Recognize(BYTE* a, int W, int H) { imageOriginal = a; cv::Mat newImg = Mat(cvSize(W,H),CV_8UC3, a); Mat gray ; cvtColor(newImg,gray, CV_BGR2GRAY); } А вот код С# [DllImport("ANPR.dll")] static public extern int ANPR_Recognize(IntPtr image, int W, int H); public MainForm() { InitializeComponent(); Image<Bgr, byte> image = new Image<Bgr, byte>("1.jpg"); IntPtr array = image.MIplImage.imageData; int imag1 = ANPR_Recognize(array, image.Width, image.Height); }
  23. Дальних нарушителей не ловит ни та ни другая программа. Скачал, запустил, сначало не пошло. Ошибка вылетала "MSVCP120.dll" Хорошо узнал где скачивать такие библиотеки https://ru.dll-files.com/. А вот и само видео как и обещал.
  24. Автотрекинг

    Помогите(HELP) кто-нибудь может компильнуть Contrib (Windows 7, x86, x64). Проект OPENCV 3.1 у меня даже не компилица - ругается. Это одна из многочисленных ошибок error C1083: Не удается открыть файл включение: opencl_kernels_calib3d.hpp: No such file or directory c:\Opencv\3.1\opencv\sources\modules\calib3d\src\stereobm.cpp 51 1 opencv_calib3d
  25. Список это не важно (по текущей дате они складываются в папки) а так я могу переименовать в любой удобный формат с помощью TotalCommanderа. Начиная допустим 0001.jpg. Все теперь до понедельника. Все изображения на работе.
×