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

iskees

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

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

  • Посещение

  • Days Won

    19

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

  1. Я имел ввиду заменить ваше private HaarCascade haarCascade; на CascadeClassifier как у barsukov написано, разумеется весь остальной код править тоже надо под эот класс, но там не большая разница
  2. Вместо HaarCascade попробуйте CascadeClassifier и должны будут загрузится оба каскада
  3. Немного не понял как связаны PCA и AAM, там же вроде совсем другой подход. Собственно по активным моделям: я использовал http://sourceforge.net/projects/asmlibrary/, проект довольно старый но рабочий, относительно быстро работает и что главное (для меня) не без геморроя но переносится на .net
  4. 3.2 3.2 часто бывают машины с номером на фальшрешетке радиатора и гистограмму яркости будет такая-же как и у номера.
  5. Вы бы хоть написали как вы этот поиск шаблона производите, какой функцией и т.п. Ну как выше сказано отсекать можно по значению функции отклика.
  6. 1 Поиск прямоугольника сработает только в идеальных условиях при которых сработает и findContours, но второй на МНОГО быстрее и мене "капризный" 2 Можно попробовать искать линии и искать среди них композицию которая бы составляла прямоугольник. Может поделитесь каскадом Хаара?
  7. C# - EmguCV - координаты контура

    Далее необходимо найти координаты этого контура, вырезать/скопировать в новую матрицу изображения, ну и дальше уже работать непосредственно с ней. Какие для это есть методы, функции? var box = contours.GetMinAreaRect(); //прямоугольник минимальный в который вписан контур var cutImage= image.GetSubImage(box) // вырезка этого прямоугольника в новое изображение
  8. h.264 Cuda

    Задача такая: нужно декодировать 4k h.264 поток. Все завелось через CvCapture, но проц грузит безбожно. из чего возникает два вопроса: 1 есть ли способ стандартный CvCaptureзаставить декодировать h.264 на карточке Nvidia 2 используется ли в CvCapture аппаратное ускорения новых процов intel (Intel® Quick Sync Video) Может кто в теме и просветит.
  9. h.264 Cuda

    Windows (от 7 до 8.1)
  10. Детектор бревен

    информации мало не ясно: 1 камера стационарна или нет 2 конвейер один или нужно что бы работало на разных 3 освещенность и возможность поставить свой свет И если камера стационарна то я бы попробовал: 1 Указать область конвейер в кадре 2 Бинаризация, бревна сильно вделаются на фоне. Если бревна не сильно выделяют то поставить лампочку. Или та же бинаризация но по цвету. 3.0 Делаем шаблоны места "нахлеста", шаблона всего два (левое бревно сверху а правое снизу и наоборот) 3 Проходим шаблоном вдоль области поиска и находим месте где шаблон "срабатывает" Или еще вариант 1,2 как выше 3.разбиваем область поиска на куски и считаем в них среднею яркость, ищем место где есть резкий всплеск а в окрестности ровные и не нулевые значения
  11. Попробовал тоже реализовать машинное обучение на облаке. Задача довольно простая, нужно обучать кучу нейросетей с постоянным их апргрейдом. Дело не особо хитрое, за три дне сделал. В Azure все это поднялось за пару часов без особых танцев с бубнами, первая сеть уже обучилась все как бы замечательно. Но есть огромная проблема – цена, самая слабая машинка в месяц выйдет в 2000, а что-то более-менее прилично уже в 10 000. В целом для себя сделал вывод, что считать в облаке можно и это удобно, но очень уж дорого. Поэтому думаю использовать это же облако немного по-другому, само обучение запускать не в облаке, а на локальных машинах, которые будут брать с облака свободные задачи, вычислять их и отправлять обратно в облако. Такая схема выйдет уже рублей в 500 в месяц. Как то так, чисто хотел опытом поделится.
  12. Мне для распознавания символов больше всего подошел Christian, правда его нет в OpenCv.
  13. if (openFileDialog1.ShowDialog() == DialogResult.OK) { using (var image = new IplImage(openFileDialog1.FileName)) using (var hsv = new IplImage(image.Size, image.Depth, image.NChannels)) { Cv.CvtColor(image,hsv, ColorConversion.BgrToHsv); var splits = hsv.Split(); Cv.Threshold(splits[0], splits[0], 160, 255, ThresholdType.BinaryInv); using( var bin = new IplImage(image.Size, image.Depth, 1)) { Cv.Threshold(splits[2], bin, 150,255, ThresholdType.BinaryInv); Cv.And(bin, splits[0], bin); Cv.Smooth(bin, bin, SmoothType.Median, 3, 3 ); Cv.ShowImage("2", bin); } foreach (var s in splits) s.Dispose(); } } http://www.compvision.ru/forum/uploads/monthly_08_2014/post-5717-0-20011600-1408638089_thumb.jpg
  14. На цветном снимке паспорта "общий текст" идет с явным оттенком красного, а заполняется черным. Можно по цвету еще отфильтровать.
  15. Определить состояние объекта

    Или если это "например мост" то там скорее всего доминирующая горизонтальная прямая или две под углом, можно их найти HoughLine или по Фурье углы определить. Но вариант с классификатором конечно лучше.
  16. а в чес собственно сложность найти и распознать баркод. если код совсем крупные и не нужна скорость, то берете zxing скармливаеете ей битмап и получаете код если он там есть. Если нужно с начало найти и вырезать код, то делаете бинаризацию или любой edge благо границы контрастные, ищите квадраты (findcountur и фильтр по соотношению сторон) ну и у вслучае qr кода ищите три стоящих рядом одного размера, а в слоучае азтека два вложенных. Не знаю как в qt но на C# это выглядит так. using (var emguimage = emgu.Convert<Gray, byte>()) using (var emgucanny = emguimage.ThresholdBinary(new Gray(120), new Gray(255))) using (var memStorage = new MemStorage()) { var rect = new List<MCvBox2D>(); emgucanny.SmoothMedian(5); var contours = emgucanny.FindContours(CHAIN_APPROX_METHOD.CV_CHAIN_APPROX_SIMPLE,RETR_TYPE.CV_RETR_CCOMP, memStorage); for (; contours != null; contours = contours.HNext) if ( Math.Abs(Convert.ToDouble(contours.BoundingRectangle.Width) / contours.BoundingRectangle.Height - 1) < 0.3) { var numberOfChildren = GetNumberOfChildren(contours); if (numberOfChildren == 0) continue; rect.Add( contours.GetMinAreaRect()); } rect.Sort((t1, t2) => t2.size.Width.CompareTo(t1.size.Width)); for (var i = 0; i < rect.Count - 1; i++) { var t = new List<MCvBox2D> {rect[i]}; for (var j = i + 1; j < rect.Count; j++) if ( (Convert.ToDouble(t[t.Count - 1].MinAreaRect().Width) / rect[j].MinAreaRect().Width) >2 && t[t.Count - 1].MinAreaRect().Contains(rect[j].MinAreaRect()) ) t.Add(rect[j]); if (t.Count == 2) { var r = rect[i]; var mr =r.MinAreaRect(); var sr = new Rectangle(Convert.ToInt32(r.center.X - mr.Width*2), Convert.ToInt32(r.center.Y - mr.Height*2), mr.Width*4, mr.Height*4); if (sr.Width<emguimage.Width/5 && sr.Left >= 0 && sr.Top >= 0 && sr.Right < emguimage.Width && mr.Bottom < emguimage.Height) { rectange.Add(sr); try { using( var cut = emguimage.GetSubRect(sr)) using ( var cutsize = cut.Resize(300, 300, INTER.CV_INTER_LINEAR)) using (var bitmap = cutsize.ToBitmap()) { var re = _qr.Decode(bitmap); if (re != null) _codes.Add(new result { points = re.ResultPoints.Select( y => new PointF(sr.X + Convert.ToInt32(y.X / 300.0 *cut.Width), sr.Y + Convert.ToInt32(y.Y / 300.0* cut.Height))) .ToList(), text = re.Text }); } } catch (Exception ex) { } } } } }
  17. webproject нужно публиковать на IIS, по сути это просто dllка, да и asp.net приложение для azure тоже dllка. Когда вы запускали это проект в визуал студии она запускала локальный аналог iis и крутила там ваш сайт. Под клиентом я имел ввиду приложение под андроид( как в проекте который описан на хабре) или винду которое бы отправляло пост запрос и получало ответ. "а чем плоха та форма что вы сделали".Да ничем не плоха, я просто смотрел что за зверь такой azure. Облачное распознавание номеров пока никому не нужно.
  18. Трекинг объектов.

    Смотрю я на видео этих трекеров и голове крутится мысль, что из этого можно получить карту глубины. Если принять за факт что фон статичный и скорость камеры известна то по динамике расстоянию между точками можно вычислить расстояние до них. Есть чисто практическая задача: летит квадрокоптер (видео и скорость по осям есть, управление с компа) натыкается на ветку и разбивается, собственно задача вычислить расстояние до ближайшей "ветки" что бы такого больше не проиходило.
  19. Самый просто путь это asp.net те кто с ним знакомы напишут серверную часть за пол часа. Создается control(для начало можно изменить фиолетовый)который принимает post запрос с файлом и вьюшку которая будет показывать результат. у меня все серверная часть выглядит так public ActionResult Index(HttpPostedFileBase file) { if (file != null && file.ContentLength > 0) { ....вызов распознавания из .net библиотеки передача результата во вьюшку ViewData.Add("Verification", vs); ViewData.Add("number", text); w.Stop(); ViewData.Add("time", w.ElapsedMilliseconds); up = true; }; ViewData.Add("upload", up); return View("Result"); } Библиотека может быть не только на C#, а любая .net в том числе и С++ CLR. но если библиотека не .net то вместо обращения к библиотеке можно запустить любой exeшник в виде процесса передав ему фотографию. Ну или можно запустить отдельно программку которая сканируется папочку и когда находит новый файл обрабатывает его и записывает результат в тоже в файл, а asp.net просто сохраняет файл и ждет пока появится результат. Клиентскую часть я не делал ограничился простой вьюшкой.
  20. Забавно, точно такую же штуку год назад делал и тоже на azure.
  21. Для видео но наложением результатов обработки. я под .net пишу там такое можно сделать только через костыли. А ресайз средствами opencv потому что если это делать средствами самого .net то время самого ресайза вырастает до 100мс. возможно это косяк .net и в с++ такого нет. Мы выводили именно через Direct3D: создавали D3D surface, лочили его и копировали туда а какое у вас время копирования было?
  22. да я сейчас directx пробую, сам вывод при любом размере как входного так и выходного(размер окна) изображения порядка 1мс что радует. Но вот копирование из iplimage в формат directx при 720p уже порядка 7мс.
  23. Заметил что стандартный gdi+ метод вывода через picturebox жутко медленный даже если зумить или растягивать кринку методами opencv. Собственно интересно кто как выводит картинку и какой способ самый быстрый(только под винду).
  24. gpu::mat

    nvidia 635m и core i5 Ivy Bridge. И на компах где это будет работать haswellа явно не будет в лучшем случае sandy bridg.
  25. gpu::mat

    Тестирую Canny на OpenCL (2.4.9) и результаты никуда не годятся: в 4 раза медленнее cuda в 6 раз медленнее простой Cpu реализации при том что в варианте OpenCL грузятся все ядра. По начало грешил на .net врапер но проверил на с++ и результаты те же. Это opencl(конктретно Canny) в opencv настолько убог или я что то не так делаю?
×