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

слежение за объектом и распознание маркеров

Recommended Posts

Посмотри от каких dll она зависит, от каких dll зависят зависимые dll. Чего-то где-то не хватает, короче.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Просто разрядность системы не совпадает с разрядностью проекта, проект хочет юзать системные DLL-ки, а они не подходят.

Измените профиль проекта (x64 , win32).

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Просто разрядность системы не совпадает с разрядностью проекта, проект хочет юзать системные DLL-ки, а они не подходят.

Измените профиль проекта (x64 , win32).

не могли бы вы подсказать как это сделать. просмотрев профиль проекта я не нашел где там указанна разрядность. кроме выбора компиляторов таких как mvs2010/2012

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

post-1-0-21059000-1400828835_thumb.png

При необходимости создайте новый профиль в Configuration manager.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

еще раз приветствую.

помогите пожалуйста написать программу для распознавания 10-15 qr кодов. она должна при нахождении на видео(видео идет потоком с камеры) нужного кода вернуть соответсвующую функцию.

самому не хватает знаний

среда разработки qt(mingw)+opencv под вин7

заранее спасибо

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

еще раз всех приветствую.

помогите пожалуйста написать(напишите) программу, за вознагрождение.

1.распознание маркеров. таких как стрелочки например, думаю лучше использовать qr-код(возврат какой нибудь функции при обнаружении).

2.получить и отслеживать координаты точек(центра масс множества точек) расставляемых на картинке.

или что нибудь одно

самому не хватает знаний и времени.

среда разработки qt(mingw)+opencv под вин7

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

а в чес собственно сложность найти и распознать баркод. если код совсем крупные и не нужна скорость, то берете 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)

                                    {


                                    }

                                }


                            }

                        }

                }

post-5717-0-28793900-1401820058_thumb.pn

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

iskees, Спасибо за ответ. а можно тоже самое на с++. буду очень признателен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×