IPB

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> HOG OpenCV 1.20
Aldaris
post 26.9.2009, 20:50
Post #1


Новичок
*

Группа: Пользователи
Сообщений: 8

Регистрация: 21.5.2009
Пользователь №: 73



Репутация:   0  


В бете версии 1.20, добавили HOG для детекта людей, но вот беда ругается при попытке получить параметры для SVM.
cv::HOGDescriptor::getDefaultPeopleDetector() вызывает внутреннюю ошибку в памяти.
У всех так? Кто-нибудь уже копал?
При этом Emgu уже состряпала реализацию, и у них работает.

П.С. Видимо придётся сорцы править
Перейти в начало страницы
 
+Цитировать сообщение
Smorodov
post 27.9.2009, 10:04
Post #2


Администратор
***

Группа: Главные администраторы
Сообщений: 509

Регистрация: 29.4.2009
Пользователь №: 1



Репутация:   7  


Цитата(Aldaris @ 26.9.2009, 21:50) *
В бете версии 1.20, добавили HOG для детекта людей, но вот беда ругается при попытке получить параметры для SVM.
cv::HOGDescriptor::getDefaultPeopleDetector() вызывает внутреннюю ошибку в памяти.
У всех так? Кто-нибудь уже копал?
При этом Emgu уже состряпала реализацию, и у них работает.

П.С. Видимо придётся сорцы править


Не надо сорцы трогать smile.gif, в папке с примерами есть peopledetect.cpp и exe - шник и все работает.

#include "cvaux.h"
#include "highgui.h"

int main(int argc, char** argv)
{
    cv::Mat img;

    if( argc > 1 )
        img = cv::imread(argv[1]);

    if( !img.data )
    {
        fprintf( stderr, argc == 1 ? "ERROR: no image was specified\n" :
            "ERROR: the specified image could not be loaded\n");
        fprintf( stderr, "Usage: peopledetect <inputimage>\n" );
        return -1;
    }

    cv::HOGDescriptor hog;
    hog.setSVMDetector(cv::HOGDescriptor::getDefaultPeopleDetector());
    cv::vector<cv::Rect> found;
    double t = (double)cv::getTickCount();
    // run the detector with default parameters. to get a higher hit-rate
    // (and more false alarms, respectively), decrease the hitThreshold and
    // groupThreshold (set groupThreshold to 0 to turn off the grouping completely).
    hog.detectMultiScale(img, found, 0, cv::Size(8,8), cv::Size(24,16), 1.05, 2);
    t = (double)cv::getTickCount() - t;
    printf("Detection time = %gms\n", t*1000./cv::getTickFrequency());
    for( int i = 0; i < (int)found.size(); i++ )
    {
        cv::Rect r = found[i];
        // the HOG detector returns slightly larger rectangles than the real objects.
        // so we slightly shrink the rectangles to get a nicer output.
        r.x += cvRound(r.width*0.1);
        r.y += cvRound(r.height*0.1);
        r.width = cvRound(r.width*0.8);
        r.height = cvRound(r.height*0.8);
        cv::rectangle(img, r.tl(), r.br(), cv::Scalar(0,255,0), 1);
    }
    cv::namedWindow("people detector", 1);
    cv::imshow("people detector", img);
    cv::waitKey(0);
    return 0;
}


--------------------
Перейти в начало страницы
 
+Цитировать сообщение
Aldaris
post 27.9.2009, 11:23
Post #3


Новичок
*

Группа: Пользователи
Сообщений: 8

Регистрация: 21.5.2009
Пользователь №: 73



Репутация:   0  


Оказалась знакомая ошибка, в дебаге не работает, в релизе всё ок, ошибка в _HAS_ITERATOR_DEBUGGING, косяки студии, опенцв не причём,.... ну почти,
Перейти в начало страницы
 
+Цитировать сообщение
RinOS
post 3.3.2010, 13:08
Post #4


Активный участник
***

Группа: Пользователи
Сообщений: 66

Регистрация: 7.8.2009
Пользователь №: 281



Репутация:   1  


Что то я даже не понял как peopledetect работает... Запустил peopledetect.exe с параметром, (передал картинку с изображением человека) peopledetect задумался на секунду и просто показал мне эту картинку... Что я не так делал?
Перейти в начало страницы
 
+Цитировать сообщение

Ответить в данную темуНачать новую тему
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:

 



RSS Текстовая версия Сейчас: 10.9.2010, 7:59
Design by: Invision Skins & Anonymous Proxy