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

ter_nk

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

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

  • Посещение

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

  1. Mat в массив байтов и обратно

    есть функция imencode, даже пример нашел vector<uchar> buf; Mat matImage = iplImage; imencode(".bmp", matImage, buf); size = buf.size(); copy(buf.begin(), buf.end(), byteArray);
  2. Ошибка при копировании в ROI

    Прошу прощения! Написал CV_8UC3 а надо CV_8UC1
  3. Бинаризирую изображение на черном фоне, с небольшими помехами получается что-то белое на черном фоне, определяю контур так Canny(mat_source, canny_output, 10, 240, 3); /// Find contours findContours(canny_output, contours, hierarchy, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE, Point(0, 0)); У меня получается один нужный контур, но когда фотографируемый предмет вылезает за рамки снимка, то получается много контуров, маленьких по площади, как получить один большой и у обрезованного предмета, как бы обрезав контур по границе, которую он пересекает? Спасибо.
  4. Определить основной контур

    Там была ошибка алгоритма предварительной бинаризации, сейчас исправляю.
  5. Определить основной контур

    Спасибо, тоже вариант как обойти, хотя урезать изображение конечно не очень хочется.
  6. Определить основной контур

    По идеи можно создать изображение по длине на 20 пикселей по ширене и высоте больше, с черным фоном, скопировать туда изображение по себедине, т.е. + 10 пикс по х и у , только не знаю как это сделать в opencv
  7. Определить основной контур

    Не понял, как вывести перед canny черный прямоугольник?
  8. собственно вопрос, может пример работающий
  9. Или хотя бы как пиксели RGB с мат получить
  10. добрый день! Делаю изображение серым, потом бинаризирую, чтоб выделить нужный контур cvCvtColor(image, gray, CV_RGB2GRAY); cvInRangeS(gray, cvScalar(5), cvScalar(160), bin); на черном фоне прямоугольник разноцветный, он выделяется сам по себе лучше при бинаризации, но у меня еще появляется много мелких контуров, которые мне мешают, как можно отфильтровать все мелкие белые поля, а оставить один мой крупный прямоугольник? Спасибо.
  11. В смысле? Так вообще использовать все cv:: ?
  12. Спасибо за ответ! Попробую. После того как создал тему, поменял параметры скаляра cvInRangeS(gray, cvScalar(20), cvScalar(254), bin); с такими значениями получил то, что хотел, но как я понимаю, это не совсем выход из ситуации, или их подстраивать программно, пока возвращаемое значение cvFindContours не станет равно 1, но тоже не вариант. Переделать на С++ интерфейс да, там время только понадобится, входные параметры то несколько иные. Кстати я думал, что cvCtvColor это С++ интерфейс, все что cv:: - это С++ ?
×