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

Поиск по сайту

Showing results for tags 'OpenCV'.



More search options

  • Search By Tags

    Введите теги через запятую.
  • Search By Author

Тип содержимого


Категории и разделы

  • Пакет OpenCV
    • OpenCV
    • Новости
    • Вопросы взаимодействия OpenCV + GDI, GDI+
  • Дополненная реальность (ARToolkit и др.)
    • ARToolkit
  • Нейросети
    • Вопросы по нейросетям и ИИ
  • Общие вопросы
    • Обсуждение общих вопросов
  • Другое

Найдено 93 результата

  1. Для системы управления складскими роботами необходимо определять погрешности монтажников при варке стеллажей. С этой целью для каждой ячейки делается фото, и сейчас живой человечек рисует в каждом таком фото желтый крестик (см. фото с красным кружочком и зеленым контуром). Пока ячеек было 2-3000, было терпимо. Сейчас планируется робосклад на 100000 ячеек, и решили делать распознавание образов (нужно определить край уголка). Образы могут быть сами разные, в т.ч. с перегороженным куском уголка (см. другие фото). Хотим использовать библиотеку OpenCV (emgucv для C#). Вопрос - в какую сторону копать? - анализ изображений (выбор отличительных признаков, морфология, поиск контуров, гистограммы) - или обнаружение объектов, в частности лиц - или еще что? Сгодятся ли для этой задачи контуры? Или, из-за игры теней и частичного перекрытия самим роботом, контуры использовать не получится? Еще чисто теоретически задача решаема для дневного освещения? Или только ночью (см. фото в аттаче)?
  2. А кто мне подскажет, как найти контуры прямоугольников в такой сложной ситуации? Выделил красным желаемый результат разделения. Вероятно, можно нейросетями (не пробовал, но уверен, что получится), но хотелось бы классическими методами OpenCV.
  3. Доброго времени суток. Интересует такая тема, как нахождение недвижимого предмета на переднем плане(т.е изначально он отсутствовал), перепробована куча вариантов и алгоритмов, но ничего стабильного так и не найдено, возможно кто то что то реализовывал похожее?
  4. Здравствуйте, пытался обучить SVM hog дескрипторами. Но в момент установки svm модели , выбрасывает исключение Находил похожие вопросы на answer opencv (Вопрос), от туда выяснил, как добавлять rho и автор советовал перейти на float массив попытался, но ситуация не изменилась Код обучения (свой картинки, 28*28) (Ошибок не возникает, файл создается ) HOGDescriptor hog = new HOGDescriptor(new Size(28,28),new Size(8,8),new Size(4,4),new Size(4,4),9); Mat trainingLabels = new Mat(); MatOfFloat temp = new MatOfFloat(); File negativeDir = new File("/home/kurenchuksergey/HogSignTrainingData/negative"); File positiveDir = new File("/home/kurenchuksergey/HogSignTrainingData/positive"); int i = -1; float[][] hogdescriptor = new float[13992][]; //13992 - image count for(File file:negativeDir.listFiles()){ Mat con = Imgcodecs.imread(file.getAbsolutePath(),Imgcodecs.CV_LOAD_IMAGE_GRAYSCALE); hog.compute(con, temp); trainingLabels.push_back(Mat.zeros(new Size(1,1),CvType.CV_32S)); } for(File file:negativeDir.listFiles()){ Mat con = Imgcodecs.imread(file.getAbsolutePath(),Imgcodecs.CV_LOAD_IMAGE_GRAYSCALE); hog.compute(con, temp); hogdescriptor[++i] = temp.toArray(); trainingLabels.push_back(Mat.ones(new Size(1,1),CvType.CV_32S)); } Mat Labels = new Mat(); trainingLabels.copyTo(Labels); Labels.convertTo(Labels,CvType.CV_32S); Mat mat = new Mat(hogdescriptor.length,hogdescriptor[0].length,CvType.CV_32FC1); for(int j = 0;j<hogdescriptor.length;j++) mat.put(i,0,hogdescriptor[i]); TrainData trainDataHog = TrainData.create(mat,Ml.ROW_SAMPLE,Labels); SVM svm = SVM.create(); svm.setType(SVM.C_SVC); svm.setKernel(SVM.RBF); svm.setDegree(0.1); // 1.4 bug fix: old 1.4 ver gamma is 1 svm.setGamma(0.1); svm.setCoef0(0.1); svm.setC(1); svm.setNu(0.1); svm.setP(0.1); svm.setTermCriteria(new TermCriteria(1, 20000, 0.0001)); svm.train(trainDataHog.getSamples(),Ml.ROW_SAMPLE,trainDataHog.getResponses()); svm.save("SVMHog"); Далее пытаюсь воспользоваться моделью (Test.java) SVM svm1 = SVM.load("SVMHog"); HOGDescriptor hog = new HOGDescriptor(new Size(28,28),new Size(8,8),new Size(4,4),new Size(4,4),9); Double rho = svm1.getDecisionFunction(0,new Mat(),new Mat()); int size = (int)(svm1.getSupportVectors().total() + 1) * svm1.getSupportVectors().channels(); float[] temp = new float[size]; svm1.getSupportVectors().get(0, 0, temp); temp[temp.length - 1] = (float)-rho; MatOfFloat vector = new MatOfFloat(temp); hog.setSVMDetector(vector); И получаю исключение (47 - строка - hog.setSVMDetector(vector); ) OpenCV Error: Assertion failed (checkDetectorSize()) in setSVMDetector, file /home/kurenchuksergey/opencv/modules/objdetect/src/hog.cpp, line 117 Exception in thread "main" CvException [org.opencv.core.CvException: cv::Exception: /home/kurenchuksergey/opencv/modules/objdetect/src/hog.cpp:117: error: (-215) checkDetectorSize() in function setSVMDetector ] at org.opencv.objdetect.HOGDescriptor.setSVMDetector_0(Native Method) at org.opencv.objdetect.HOGDescriptor.setSVMDetector(HOGDescriptor.java:306) at com.company.Test.main(Test.java:47)
  5. Добрый день, есть фотография шахматной доски расположенной под определенным углом, я нашел ключевые точки, скажите как найти нормаль к этой шахматной доске?
  6. Создаю андроид программу которая с использованием opencv(dnn) загружает модель нейронной сети Enet и производит сегментацию входного изображения. Все идет гладко до обработки полученных результатов. На языке python обработка производится довольно просто - в цикле проходимся по матрице пикселей и в зависимости от значения присваиваем ему цвет. В java все не так: после работы возвращается объект типа Mat со следующими параметрами: res = Mat [ -1*-1*CV_32FC1, isCont=true, isSubmat=false, nativeObj=0x7f3e56fff160, dataAddr=0x7f3e44806000 ] res.total() = 1036800 res.channels() = 1 res.size() = 6x1 res.dims() = 4 res.cols() = -1 res.rows() = -1 Более того если все таки достать(http://answers.opencv.org/question/175676/javaandroid-access-4-dim-mat-planes/) значения пикселей из полученного результата то они не соответствуют ожиданиям. Т.е. каждому классу соответствует число например если 5 классов то возвращаются числа от 0 до 4(так работает на python). Здесь же мне возвращаются числа вида: -26.287221908569336, -14.588539123535156, -7.386473655700684, 1.4765703678131104, 15.550891876220703. Кто нибудь знает как преодолеть данную проблему? Почему объект Mat возвращает не те значения?
  7. Одно видео внутрь другого

    Добрый день, работаю на opencv версии 3.3. Мне нужно сделать следующее, есть frame получаемый из камеры (условно 1280х720), нужно на данный frame наложить второй видеоролик, уже меньшего размера (условно, 300х300). Как мне это реализовать, подскажите пожалуйста. Спасибо!! Пишу на Си. Наброски кода: CvCapture* bigframe = cvCaptureFromCAM(0); Cvcapture* smallframe=cvCreateFileCapture("1.avi"); CvMat* display; cvNamedWindow("video", CV_WINDOW_AUTOSIZE); while(1) { display=cvQueryFrame(bigframe); cvShowImage("video", display); }
  8. Здравствуйте. Есть вот такая картинка: Необходимо определить область каждой клетки, отделить ее от соседней, обвести контуром. Некоторые клетки находятся в процессе деления, их необходимо выделить особенно (другим цветом). Также надо посчитать количество клеток. Каждая клетка должна превратится в некий объект для дальнейшего анализа. Вот такая задача сегментации. Пытаюсь решать ее с помощью opencv и python. В opencv я совсем новичок, поэтому для начала попробовал алгоритм из документации для сегментации монет: https://docs.opencv.org/3.3.1/d3/db4/tutorial_py_watershed.html Но для моей картинки это не подходит, контуры плохо выделяются, получается каша. Видимо это из-за того что внутренности клетки примерно одно цвета с фоном. Пробовал играться с параметрами, но безуспешно. Добился вот такой картинки: На этом этапе и застрял. Сомневаюсь что я двигаюсь в правильном направлении. Мой вопрос: 1. Какой алгоритм подошел бы мне? 2. С чего начинать? 3. Что почитать на этот счет? Заранее благодарю.
  9. Тренировка (haar cascade training)

    Всем привет! Вот и закончились праздники. Пока они были - успел заинтересоваться возможностями openCV. Прошу не кидаться камнями, ибо относительно недавно занялся изучением, и могу делать глупые ошибки. В общем, поигрался с мануалами (детектирование лица на видео, котики на фото). Захотел попробовать натренировать свою xml (haar cascade training) для определения, есть ли на видео рыбки (аквариумные). Правильно ли я вижу процесс тренировки? : 1. Я должен подготовить две выборки фотографий (позитивные и негативны) c (например) ~1000 и 3000 примеров соответственно ; 2. Разложить их по папкам good и bad; на уровне корня создать два файла: good.dat и bad.dat 3. Привожу к общему формату положительные : opencv_createsamples.exe -info something\Good.dat -vec samples.vec -w 20 -h 20 4. Создаю финальный каскад xml: opencv_traincascade.exe -data haarcascade -vec samples.vec -bg something\Bad.dat -numStages 16 -minhitrate 0.999 -maxFalseAlarmRate 0.4 -numPos 200 -numNeg 500 -w 20 -h 20 -mode ALL -precalcValBufSize 1024 -precalcIdxBufSize 1024 на втором пункте у меня возникают некоторые вопросы: - какого размера должны быть good и bad фотографии? Нужно делать их на профессиональный фотоаппарат, или хватит камеры телефона? Должен ли быть у них одинаковый размер? - если в файле bad.dat, согласно статьи с хабра, должно быть просто перечисление фотографий, то в файле good.dat, цитирую "Кроме пути должно быть указанно положение рассматриваемого объекта и его размер.". если я сделаю несколько фотографий рыбки в аквариуме, мне нужно будет потом эти фотографии в ручную обрезать, найти у каждой фотографии координаты рыбки и указать? Пока больше вопросов нет. Искал по форуму ответы - не смог найти. Заранее спасибо!)
  10. Доброго времени суток.Помоги написать программу на Питоне 3.6, либо на ++.Которая бы: детектировала лицо (сделано),далее находила AU's (ЕД, Пол Экман),на основе этих AU'sов предполагала эмоцию.На счет кода почти неважно чей он будет (e.c, copypast github) и по какой концепции будет реализован, главное чтобы можно было разобраться с распознаванием AU'sов.Есть пару проектов с гита по теме, но у меня они плюются ошибками:) Дедлайн по теме 15 января.
  11. Добрый день! Есть обычное трафик видео. Задача состоит в том чтобы на выходе получить сжатое видео в котором объекты накладываются большим количеством на статический задний фон. Чтобы накладывать объекты большим количеством надо каждый объект (его координаты и значения пикселей) записывать в отдельный массив, либо создавать маски numpy для каждого, и затем уже накладывать. Пытаюсь через контуры, фильтрую изображение, получаю белые блобы, нахожу контуры, но не понимаю как данные каждого контура записывать в отельные массивы. Вот кусочек кода начиная после нахождения контуров: # Находим координаты контура mask = np.zeros(thresh.shape,np.uint8) cont2 = cv2.drawContours(mask,contours,0,255,-1) pixelpoints = np.transpose(np.nonzero(mask)) # Находим значения пикселей for k in range(0,(len(pixelpoints))): a = (frame[pixelpoints[k][0]][pixelpoints[k][1]]) pix_list.append(a)
  12. Contours detection

    Всем привет, Для удобства работы с результатами semantic segmentation хочу векторизовать label map. Т.е. у нас есть картинка, где каждому пикселю соответствует номер класса и мы хотим все такие блобы закодировать полигонами, соответствующими границам объектов. Но, я внезапно обнаружил, что cv::findContours() работает только с бинарными изображениями (т.е. там только 2 лэйбла 'фон'/'не фон'). Теоретически я могу свести задачу к предыдущей, довольно просто генерируя для каждого класса соответствующую бинарную маску. Таким образом у меня получится куча контуров, но вот их иерархия вложенности, которая строится внутри findContours, будет невалидной, и придется делать какие-то дополнительные (не самые вычислительно-дешевые) телодвижения для того, чтобы определить корректный порядок отрисовки вложенных полигонов. Может быть кто-то сталкивался с подобной задачей и знает уже существующую имплементацию для конвертации label map'ов в полигоны для небинарных масок, с поддержкой древовидных иерархий?
  13. Распознавание лиц

    Здраствуйте! Мне нужна программа для распознования лиц с картинки используя нейросети с помощью метода HOG. Хорошо если на С#. Можете мне как-то помочь??
  14. Подскажите, пожалуйста, чем лучше распознать слабо отличимые от фона линии, например линии на руке. Я понимаю что скорее всего надо применять усиливающие фильтры (или поднимать контраст), но может есть какие-то специальные алгоритмы, упрощающие жизнь?
  15. Доброго времени суток. Как возможно установить OpenCV 3.3 в связке с Cuda 8.0 через CMake GUI? Пытался делать по инструкции http://jamesbowley.co.uk/buildcompile-opencv-v3-3-on-windows-with-cuda-8-0-and-intel-mkltbb/ (без Intel SDK), но сборка в Visual Studio не прекращается в течении 3-4 часов. Может есть где готовые RAR архивы с готовыми сборками OpenCV 3.3 + Cuda 8.0?
  16. Здравствуйте! Есть следующая задача: необходимо найти 2 ярких красных светодиода в real-time. Сделал это с помощью перехода в HSV и поиска блобов по каждому из каналов - скорость получилась неподходяще малой, зато точность прекрасна. Теперь нужно это ускорить, есть идея попробовать уйти от блобов - но итог этого не порадовал по точности абсолютно - система получилась очень сильно зависимая от окружающего освещения. Как можно это решить, какие методы использовать? Необходимо найти яркие диоды (2 штуки), окружающее освещение - лампы дневного света, в идеале более 20fps.
  17. Установка opencv на python

    Что делать если после установки opencv на python, при наборе а командной строке import cv2 возникает ошибка? При это если набирать в idle ошибки нет.
  18. Добрый день. Подскажите, какие есть варианты для очистки изображения от "шума"? Под шумом подразумеваю печатный текст "пiдпис" и "№". Нюанс еще в том, что этот текст может быть напечатан разными шрифтами и разного размера. Пробовал удалить наложением эталона с логическим AND. Получается, но далеко не идеально. Возможно, есть другой вариант очистки? P.S. Угловой перекос устранил, линии удалил. Вопрос исключительно по очистке от печатного текста.
  19. ASM/AAM в OpenCV

    Добрый день! Хочу написать программу, распознающую основные эмоции человека по видеопотоку вебки, используя opencv. Насколько я понимаю, наиболее подходящими для меня будут алгоритмы aam/asm, позволяющие выделить основные морфологические точки лица, по взаимному расположению которых я и определю эмоцию. Вопрос - эти алгоритмы реализованы в opencv? Если да - есть ли демки/примеры, как называются классы? В ходе непродолжительного гуглинга актуальный ответ найти не удалось.
  20. Привет коллеги! Прошу помощи! Как написать собственную прошивку для камер Hikvision? Есть алгоритмы детектор огня, оставленных предметов, распознавание номеров, трекинг, автотрекинг. Хочу, чтобы эти алгоритмы работали в голове камеры и выдавали результат в виде текста на изображении, либо выделением области цветом. Как это сделать? Что почитать? Как нужно откомпилировать проект Opencv, чтобы его библиотеки тоже вошли в прошивку? Любой информации буду рад.
  21. кто сможет реализовать? 1. Константирование - повышение контрастности изображения нелинейным оператором преобразования. 2. Фильтрация - Нелинейная локальная фильтрация медианным фильтром для подавления шумов. 3. Выделение границ оператором Собела. 4. Триангуляция. подробности и формулы пришлю в лс.
  22. Размытие

    В общем, писать самой код для размытия смысла нет, т.к. он есть на робокрафте http://robocraft.ru/blog/computervision/281.html Но суть в том, что дали задание - Сделать фильм, в котором исходная картинка подвергается размытию с возрастающим размером шаблона. То есть, постепенно размывается. Для алгоритма размытия используйте гауссов фильтр или медианный фильтр. Как его сделать, в душе не чаю. Может кто-то помочь?
  23. компилирую и запускаю пример http://docs.opencv.org/2.4/doc/tutorials/features2d/feature_homography/feature_homography.html но не проходит проверку if( !img_object.data || !img_scene.data ) { std::cout<< " --(!) Error reading images " << std::endl; return -1; } с чем это может быть связанно и как это исправить? А так же каким лучше методом узнать на сколько отличаются изображения друг от друга(например другое может быть немного меньше, со сдвигами и повернуто), после чего восстановить второе на сколько это возможно близко к первому? В каком направлении лучше копать? p.s.: vs17; opencv 2.4.13
  24. Доброго времени суток всем. Такая проблема случилась, что надо мне писать диплом, а я до сих пор не могу настроить взаимодействие двух библиотек. Суть такова, что надо через камеру для микроскопа ToupCam получать видео в реальном времени (интерферограмму, если кому интересно) и так же в режиме on-line выполнять с этим видео некие манипуляции, такие как получение гистограммы, ДПФ - фильтрация - обратное ДПФ и т.д. Для разработки была выбрана библиотека OpenCV, но она не желает определять камеру и подключаться к ней. Из китайских форумов я понял, что это нормально. В комплекте с камерой идет SDK под любую платформу и даже небольшая инструкция с описанием функций, но это не шибко помогает. Мне надо получить изображение с камеры, перегнать его в cv::Mat и дальше уже все нормально будет. Вот. А теперь вопрос. Сталкивался ли кто-нибудь с подобным сочетанием библиотек? И если да, могли бы вы поделиться если не готовым кодом, то хотя бы объяснить доступным языком, в какую сторону мне копать? P.S. Нашел на форуме реализацию ДПФ и обратного ДПФ, за что хотелось бы выразить огромную благодарность тов-щу smorodov за красивый код и комментарии в нем. P.P.S. На всякий случай приложу документацию по SDK, если это поможет. en.html
  25. кто может помочь? Регулировка диаметра кристалла путем оптического сканирования величины диаметра с помощью телевизионной системы в C++ OpenCV. нужно найти яркую дугу и определить ее диаметр в пикселях, а потом перевести значение соответствующее реальному значению в миллиметрах. Пример как должно быть см. в приложении 6.pdf
×