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

Андрей_Андрей

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

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

  • Посещение

Сообщения, опубликованные пользователем Андрей_Андрей


  1. Пытаюсь собрать Opencv 2.4.11 с TBB и IPP в надежде что это уменьшит тормоза моего приложения
    Если кто знает, просветите пожалуйста насчет следующих моментов: 

    - встречал посты где люди пишут, что начиная с версии OpenCV 2.4.5 нет необходимости в сборке с TBB, якобы автоматом будут задействованы методы, которые используют мультрединг, так-ли это? 

    - я с первого раза собрал Opencv 2.4.11 с TBB под студию 2013 с родным компилятором студии. посмотрел getBuildInformation() - TBB задействовано, но прироста производительности я не замечаю - как было 60 мс на один проход цикла, так и осталось. Что с TBB, что без него, загрузка всех 4-х ядер процессора равномерная. 
    - при попытке собрать и с TBB и с IPP компилятор валит ошибки вида: Error    95    error LNK1181: cannot open input file '..\..\lib\Release\opencv_calib3d2411.lib'    C:\opencv\build_tbb_ipp\modules\ocl\LINK    opencv_ocl - хотя делаю все так-же, с чем это может быть связано? 
    - в скомпилированной директории я не нахожу файлов #include <opencv2/highgui/highgui.hpp> и #include <opencv2/opencv.hpp> и дело не в путях , в получившейся в рез-те компиляции папке build этих файлов *.hpp нет в принципе. ЧЯДНТ?

    Спасибо.


  2. 5 часов назад, APXANGEL сказал:

    Если камера стоит сверху и смотрит на дорогу, то как вариант можно использовать частотный анализ, должно быть довольно быстро.

    Можете дать ссылку на описание метода, или примера?


  3. Ну, у существующих комплксов разные характеристики и функции разные...А вот "поток" например, использует core i7. У автоурагана действительно слабенький селерон, я правда не знаю, сколько полос он видит одновременно.


  4. Ищу в потоке машин пластины номеров. нахожу обученным каскадом Хаара. 
    использую detectMultiScale. Каскад обучен на примерно 1000 положительных примеров и 5000 отрицательных.

    Прототипировал на python2. При этом искал пластины сначала на всем кадре 2560х2048 точек, потом пробовал выделять зоны в которых есть движущиеся автомобили, и искать только в них. 

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

    Перешел на С++/VS2013. С родным компилятором MSVS. Удивительно то, что программа в Debug версии имеет цикл больше секунды, а в Release -  300 - 350 мс, что больше, чем у питона!. Все 4 ядра Core I5 и в питоне, и в С++ при работе release версии грузятся примерно на 90%. Утечек памяти не наблюдаю. 
    Почему С++ не дает выигрыша по скорости, хотя должен? 

    Где я не прав? Что подправить в настройках в Visual Studio 2013?

    и главное, что дальше делать? 

    Спасибо.

     


  5. огромное спасибо за советы, каскад хотя-бы начал учиться. Параметры такие:
    opencv_traincascade.exe -data haar -vec samples.vec -bg Bad.dat -minhitrate 0.990 -maxFalseAlarmRate 0.4 -numPos 689 -numNeg 800 -numStages 16 -w 30 -h 10 -featureType LBP -acceptanceRatioBreakValue -1 -precalcValBufSize 2048 -precalcIdxBufSize 2048 -numThreads 4

    доходит до 12 stage и потом та-же ошибка :

    POS count : consumed   689 : 707
    Train dataset for temp stage can not be filled. Branch training terminated.

    Опять ему мало примеров?

    каскад обучаю на поиск номерных знаков. то,  что обучилось на картинке находит следующее: см. вложение.

    Скажите - почему столько ложных обнаружений? плохая выборка контрпримеров? 

    В какую сторону копать дальше?

    Спасибо.

    Badhaar.jpg


  6. Пробую учить каскад хаара. Изучил  https://habrahabr.ru/post/208092/   Запускаю opencv_traincascade.exe -data haar -vec samples.vec -bg Bad.dat -minhitrate 0.990 -maxFalseAlarmRate 0.5 -numPos 68 -numNeg 49 -numStages 16 -w 30 -h 10 -featureType LBP -acceptanceRatioBreakValue 10e-5 -precalcValBufSize 2048 -precalcIdxBufSize 2048 -numThreads 4 из opencv версий 2.4.10 и 2.4.11 и 3.1. примеров 450, контрпримеров 98. 

    на opencv 2.4.10 останавливается на 5-й минуте обсчета, параметры запуска такие: 

    C:\cars>opencv_traincascade.exe -data haar -vec samples.vec -bg Bad.dat -minhitrate 0.990 -maxFalseAlarmRate 0.5 -numPos 68 -numNeg 49 -numStages 16 -w 30 -h 10 -featureType LBP -acceptanceRatioBreakV
    alue 10e-5 -precalcValBufSize 2048 -precalcIdxBufSize 2048 -numThreads 4
    Training parameters are loaded from the parameter file in data folder!
    Please empty the data folder if you want to use your own set of parameters.
    PARAMETERS:
    cascadeDirName: haar
    vecFileName: samples.vec
    bgFileName: Bad.dat
    numPos: 68
    numNeg: 49
    numStages: 16
    precalcValBufSize[Mb] : 2048
    precalcIdxBufSize[Mb] : 2048
    stageType: BOOST
    featureType: LBP
    sampleWidth: 30
    sampleHeight: 10
    boostType: GAB
    minHitRate: 0.995
    maxFalseAlarmRate: 0.5
    weightTrimRate: 0.95
    maxDepth: 1
    maxWeakCount: 100

    ===== TRAINING 0-stage =====
    <BEGIN
    POS count : consumed   68 : 68
    NEG count : acceptanceRatio    49 : 1
    Precalculation time: 0.006
    +----+---------+---------+
    |  N |    HR   |    FA   |
    +----+---------+---------+
    |   1|        1|        0|
    +----+---------+---------+
    END>
    Training until now has taken 0 days 0 hours 0 minutes 0 seconds.

    ===== TRAINING 1-stage =====
    <BEGIN
    POS count : consumed   68 : 68
    Train dataset for temp stage can not be filled. Branch training terminated.

    C:\cars>pause
    Для продолжения нажмите любую клавишу . . .

     

    Собственно вопрос - что не так? 
    Почему он останавливается с ошибкой через 5 минут учебы?
    Спасибо.


  7. В компанию "Ситроникс" (sitronics-cams.com) требуется программист С/С++ для разработки приложений систем машинного зрения. 
    Требования:

    - хорошее знание С/С++, openCV для windows или linux систем. 
    - опыт использования любой системы контроля версий
    - примеры кода для ознакомления

    Плюсом будут:

    - знание Python, Java, matlab 
    - опыт самостоятельной разработки алгоритмов машинного зрения

    Условия:

    - офис рядом с м. Петровско-Разумовская 
    - полное соблюдение ТК РФ

    Компенсация обсуждается индивидуально с каждым кандидатом.. 

     


  8. Можно, но только не средствами Питона. Надо собрать OpenCV из исходников с дебажной инфой и посмотреть что выбирается в cap.cpp

    Решил. Помог совет отсюда: http://stackoverflow.com/questions/11699298/opencv-2-4-videocapture-not-working-on-windows

    последовательность действий такова:

    копируем все файлы из \opencv\sources\3rdparty\ffmpeg в site-packages и\или прописываем путь до них в PATH.

    затем переименовываем opencv_ffmpeg.dll в opencv_ffmpegXYZ.dll где X.Y.Z - версия openCV. в моем случае 2.4.10 и файл назывался opencv_ffmpeg2410.dll. 

    После этого по прежнему ничего не работает.

    Далее идем в opencv\build\x64\vc10\bin и копируем  opencv_ffmpegXYZ_64.dll, заменяем им ранее скопированный opencv_ffmpeg_64.dll. Именно так, иначе не работает, т.к. файлы opencv_ffmpeg_64.dll из папок \sources\3rdparty\ffmpeg и build\x64\vc10\bin различаются.

    После этого все заводится. 

    Моя конфигурация: Win 8.1x64 Python 2.7x32 openCV 2.4.10x32


  9. ffmpeg штука хитрая. У меня есть файлы, сжатые кодеком lagarith (сжатие без потери качества). Если рядом лежит opencv_ffmpeg.dll, то они не проигрываются. Если убрать эту dll из папки, то проигрываются. Почему? Потому что ffmpeg не умеет этот кодек, а avi контейнеры понимает. А сам кодек, если не ошибаюсь, вообще как vfw фильтр в систему ставится вместе с K-lite codec pack.

    Думаю, что проблема где-то у тебя в системе, с твоим набором кодеков. Такое очень трудно будет решить нам со стороны. попробу запустить на другом компе, на нескольких разных компах. А потом сравнить их, если где-то проиграется.

    мда.. а можно как-то это отдебажить? посмотреть версию кодека который питон пытается использовать, например в процессе захвата...


  10. Гм. А файл-то открывается? Что будет, если абсолютный путь к нему указать?

    открывается. абсолютный путь проблему не решил. 

    Заметил одну штуку... ставил ffshow. после этого стали захватываться некоторые avi. а mp4 - нет.

    потом поставил ffmpeg. те авишники что раньше захватывались, захватываться перестали. сейчас поставил K-lite codec pack.

    Теперь ничего больше не захватывается, кроме встроенной в ноутбук web-камеры.


  11. Скорее всего кодеки не установлены.

    Поставьте K-Lite codec pack, думаю должно быть достаточно.

    поставил, перезагрузил - без результата. файлы открываются медиапроигрывателями, а openCV - не хочет...

    вот код - примитивный- 

    import numpy as np
    import cv2
     
    cap = cv2.VideoCapture('video2.avi')
    #cap = cv2.VideoCapture(0)
    ret, frame = cap.read()
    print 'ret=',ret
    while(ret):
        # Capture frame-by-frame
        ret, frame = cap.read()
        cv2.imshow('frame',frame)
        if cv2.waitKey(1) & 0xFF == 27:
            break
     
    cap.release()
    cv2.destroyAllWindows()
     
    с web- камеры все захватывается хорошо

  12. разобрался. в примере motemp.py в папке samples для питона метод используется работает и из текста примера понятно как. Грустно, что из документации на docs.opencv.org ничего не понятно. Буду искать более детальный справочник по opencv.


  13. смотрю cv2.updateMotionHistory(silhouette, mhi, timestamp, duration)  на docs.opencv.org вместо silhouette подставляю картинку такую-же как и mhi - выпадает с сообщением 

    OpenCV Error: Bad type of mask argument () in cvUpdateMotionHistory, file ..\..\..\..\opencv\modules\video\src\motempl.cpp, line 54
    Traceback (most recent call last):
      File "C:/Users/ataranov/Downloads/opcvDistr/opencv/sources/samples/python2/edge.py", line 47, in <module>
        cv2.updateMotionHistory( img, m_motionHistoryImage, 200, 100 )
    cv2.error: ..\..\..\..\opencv\modules\video\src\motempl.cpp:54: error: (-208)  in function cvUpdateMotionHistory
     
    не знаю как быть и где почитать про это...
     

  14. здравствуйте. Нужно отслеживать автомобиль появляющийся из-за горизонта. однажды будучи захваченным, он должен продолжать отлеживаться, даже если остановится, а потом продолжит движение. Судя по мануалам каскады хаара мне не очень подойдут. Экспериментирую в питоне с updateMotionHistory но ругается на то, что не подходит ему первый аргумент. 
    Подскажите, в каком направлении двигаться..
    Спасибо.

×