ProgRoman
-
Количество публикаций
190 -
Зарегистрирован
-
Посещение
-
Days Won
7
Сообщения, опубликованные пользователем ProgRoman
-
-
Отлично! всё получилось, для этого мне пришлось пересобрать либу(libccv) и изменить makefile, собрал её без оптимизации и добавил ещё отладочную информацию и всё стало работать наверно что-то с оптимизацией связано было..
CFLAGS := -g -O0 -ffast-math -Wall $(CFLAGS)# -fprofile-arcs -ftest-coverage NVFLAGS := -g -O0 $(NVFLAGS)
это были изменения теперь при отладке можно заходить в ccv_read ну и другие функции)
при выполнении команды
./siftmatch ../samples/book.png ../samples/scene.png
выдал список точек
....
190.190292 153.517532 => 280.543396 132.711090
220.898056 206.221832 => 317.080750 141.205688
191.220901 54.023006 => 236.006592 90.889870
191.220901 54.023006 => 236.006592 90.889870
218.149765 126.782501 => 279.896118 108.751839
126.360435 68.830391 => 217.303818 126.628815
105.916687 222.729126 => 256.858429 107.466881
105.916687 222.729126 => 256.858429 107.466881
338x289 on 512x384
98 keypoints out of 1178 are matched
elpased time : 3432
при выполнении
./cnnclassify ../samples/dex.png ../samples/image-net.sqlite3
появился набор чисел
363 0.258338 374 0.096494 365 0.057573 376 0.057549 384 0.039335
elapsed time 8236ms
так, что всё работает спасибо всем за помощь!
Буду разбираться, что за цифры и что с ними можно сделать..
-
у меня ccv_read() кода нету почему то.. есть дефайн в ccv.h, а какого-нибудь ccv.c нету где есть эта функция
ccv.h ..... int ccv_read_impl(const void* in, ccv_dense_matrix_t** x, int type, int rows, int cols, int scanline); #define ccv_read_n(in, x, type, rows, cols, scanline, ...) \ ccv_read_impl(in, x, type, rows, cols, scanline) #define ccv_read(in, x, type, ...) \ ccv_read_n(in, x, type, ##__VA_ARGS__, 0, 0, 0) // this is a way to implement function-signature based dispatch, you can call either // ccv_read(in, x, type) or ccv_read(in, x, type, rows, cols, scanline) // notice that you can implement this with va_* functions, but that is not type-safe
ccv_read_impl, которая вызывается в свою очередь из ccv_read_n, а она из ccv_read так же нигде нету кода.. как это возможно.. ставлю точку останова она просто перескакивает через неё.. не заходит внутрь...
-
скомпилировать под netbeans всё таки получилось надо в настройках изменить gcc на clang и добавить дополнительные параметры, которые есть в make файле, всё собралось без ошибок, тут такая проблема при чтении изображения
ccv_read(argv[1], &image, CCV_IO_GRAY | CCV_IO_ANY_FILE);
изображение не считывается, image равен 0 всегда, не понятно почему так.. пробовал и абсолютный и относительный путь всё равно image равен 0..
-
А как можно результат посмотреть?.. у меня при вводе той же команды только с sudo вроде бы стало выполняться..
roman@roman-VirtualBox:~/ccv/bin$ sudo ./siftmatch ../samples/book.jpg ../samples/scene.jpg
roman@roman-VirtualBox:~/ccv/bin$
в папке sample ничего не появляется.. странно..
если ./cnnclassify вызывать таким образом то.. будет следующее
roman@roman-VirtualBox:~/ccv/bin$ sudo ./cnnclassify ../samples/book.jpg ../samples/image-net.sqlite3
cnnclassify: cnnclassify.c:63: int main(int, char **): Assertion `image != 0' failed.
roman@roman-VirtualBox:~/ccv/bin$
и ещё вопрос такой каким образом можно отлаживаться, а то работать в камандной строке не всегда удобно) в netbeans как я понял надо саму среде как-то настраивать..
-
да вроде бы стоит у меня libpng
вот полный список, что говорит при конфигурации
roman@roman-VirtualBox:~/ccv/lib$ ./configure
checking for clang... clang
checking for nvcc... nvcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether clang accepts -g... yes
checking for clang option to accept ISO C89... none needed
checking how to run the C preprocessor... clang -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking xmmintrin.h usability... yes
checking xmmintrin.h presence... yes
checking for xmmintrin.h... yes
checking png.h usability... yes
checking png.h presence... yes
checking for png.h... yes
checking jpeglib.h usability... yes
checking jpeglib.h presence... yes
checking for jpeglib.h... yes
checking fftw3.h usability... yes
checking fftw3.h presence... yes
checking for fftw3.h... yes
checking linear.h usability... no
checking linear.h presence... no
checking for linear.h... no
checking cblas.h usability... yes
checking cblas.h presence... yes
checking for cblas.h... yes
checking tesseract/capi.h usability... no
checking tesseract/capi.h presence... no
checking for tesseract/capi.h... no
checking Accelerate/Accelerate.h usability... no
checking Accelerate/Accelerate.h presence... no
checking for Accelerate/Accelerate.h... no
checking libavcodec/avcodec.h usability... yes
checking libavcodec/avcodec.h presence... yes
checking for libavcodec/avcodec.h... yes
checking libavformat/avformat.h usability... yes
checking libavformat/avformat.h presence... yes
checking for libavformat/avformat.h... yes
checking libswscale/swscale.h usability... yes
checking libswscale/swscale.h presence... yes
checking for libswscale/swscale.h... yes
checking dispatch/dispatch.h usability... no
checking dispatch/dispatch.h presence... no
checking for dispatch/dispatch.h... no
checking for dispatch_apply in -ldispatch... no
checking for cos in -lm... yes
checking for cblas_dgemm in -lgslcblas... yes
checking for gsl_blas_dgemm in -lgsl... yes
checking cuda... no
USE: clang
COMPILE FLAGS: -msse2 -D HAVE_SSE2 -D HAVE_LIBPNG -D HAVE_LIBJPEG -D HAVE_FFTW3 -D HAVE_CBLAS -D HAVE_AVCODEC -D HAVE_AVFORMAT -D HAVE_SWSCALE -D HAVE_GSL
LINK FLAGS: -lm -lpng -ljpeg -lfftw3 -lfftw3f -lpthread -lblas -lavcodec -lavformat -lswscale -lgsl
configure: creating ./config.status
config.status: creating config.mk
-
попробовал в командной строке. make собрал все файлы из ./bin без ошибок, появились объектные файлы и исполняемые ну а далее я как в примере в doc вызвал исполняемый файл
./siftmatch ../samples/book.png ../samples/scene.png
выдало следующий ответ
попробовал cnnclassifyОшибка сегментирования (сделан дамп памяти)./cnnclassify ../samples/dex.png ../samples/image-net.sqlite3 output.png
ответ такой
cnnclassify: cnnclassify.c:63: int main(int, char **): Assertion `image != 0' failed.
Аварийный останов (сделан дамп памяти)
сами исполняемые файлы собраны без ошибок..
-
Пробовал ещё и под Debian собирать.. всё собралось, получил libccv.a, а примеры выполнить так и не получилось, почему-то ошибки одни и теже.. как-то очень странно.. не понятно почему eglibc не подключилась.. (пакет eglibc-source устанавливал)... может быть в настройках netbeans надо что-то прописывать..
-
а как её подключить я сейчас установил этот пакет eglibc как ты писал выше... попробовал заново откомпилировать ошибки теже удалил либу libccv.a и пересобрал.. но почему-то ошибки всё теже странно... как-то...
-
Как-то странно проверил файл ccv_convnet.c как-то не нашёл там действительно функции powf.. хотя в самом коде она используется.. что-то непонятно..
На самом деле пробовал и другие примеры, что-то пока без результатно...
к прмеру при выполнении siftmatch.c появляется следуещее
ccv_sift.c:(.text+0x205): undefined reference to `exp2'
ccv_sift.c:(.text+0x22c): undefined reference to `__sqrt_finite'
ccv_sift.c:(.text+0x28f): undefined reference to `__sqrt_finite'
ccv_sift.c:(.text+0x2f1): undefined reference to `pow'
ccv_sift.c:(.text+0x3c8): undefined reference to `__sqrt_finite'
ccv_sift.c:(.text+0x441): undefined reference to `pow'
ccv_sift.c:(.text+0x61d): undefined reference to `pow'
ccv_sift.c:(.text+0x129f): undefined reference to `exp2'
ccv_sift.c:(.text+0x13c0): undefined reference to `__exp_finite'
ccv_sift.c:(.text+0x1d21): undefined reference to `__sqrt_finite'
ccv_sift.c:(.text+0x1dd6): undefined reference to `sincos'
../lib/libccv.a(ccv_basic.o): In function `ccv_sobel':
ccv_basic.c:(.text+0xb28): undefined reference to `__exp_finite'
../lib/libccv.a(ccv_basic.o): In function `ccv_blur':
ccv_basic.c:(.text+0x3badc): undefined reference to `__exp_finite'
collect2: выполнение ld завершилось с кодом возврата 1
-
У меня почему-то не всё компилируется (пробую код из примера ./bin/cnnclassify.c)
к примеру код компилируется вроде бы всё нормально...
assert(argc >= 3); ccv_enable_default_cache(); ccv_dense_matrix_t* image = 0; ccv_read(argv[1], &image, CCV_IO_ANY_FILE | CCV_IO_RGB_COLOR); if (image != 0) { //ccv_convnet_t* convnet = ccv_convnet_read(0, argv[2]); ccv_dense_matrix_t* input = 0; //ccv_convnet_input_formation(convnet, image, &input); ccv_matrix_free(image); uint elapsed_time = get_current_time(); ccv_array_t* rank = 0; } ccv_drain_cache();
но если же раскомментировать строчкуccv_convnet_t* convnet = ccv_convnet_read(0, argv[2]);
то идёт ошибка..
gcc -o dist/Debug/GNU-Linux-x86/test_proj build/Debug/GNU-Linux-x86/main.o -L../../ccv/lib -lccv
../../ccv/lib/libccv.a(ccv_convnet.o): In function `_ccv_convnet_layer_forward_propagate':
ccv_convnet.c:(.text+0x1db1): undefined reference to `powf'
ccv_convnet.c:(.text+0x2165): undefined reference to `powf'
../../ccv/lib/libccv.a(ccv_convnet.o): In function `ccv_convnet_classify':
ccv_convnet.c:(.text+0x2dff): undefined reference to `__expf_finite'
ccv_convnet.c:(.text+0x2e5d): undefined reference to `__expf_finite'
../../ccv/lib/libccv.a(ccv_basic.o): In function `ccv_sobel':
ccv_basic.c:(.text+0xb28): undefined reference to `__exp_finite'
../../ccv/lib/libccv.a(ccv_basic.o): In function `ccv_blur':
ccv_basic.c:(.text+0x3badc): undefined reference to `__exp_finite'
collect2: выполнение ld завершилось с кодом возврата 1
make[2]: *** [dist/Debug/GNU-Linux-x86/test_proj] Ошибка 1
make[2]: Выход из каталога `/home/roman/samples/test_proj'
make[1]: *** [.build-conf] Ошибка 2
make[1]: Выход из каталога `/home/roman/samples/test_proj'
make: *** [.build-impl] Ошибка 2
что-то не понятно, вроде бы ccv_convnet_t есть в библиотеке ccv не знаю что и думать...
в компоновщике в дополнительные каталоги библиотек добавил libccv.a
-
Отлично! make выполнился без ошибок, создалась библиотека libccv.a теперь пробую примеры запускать)
-
что-то у меня какой-то косяк с установкой, так после когфигурации получаю такое сообщение
roman@roman-VirtualBox:~/ccv/lib$ ./configure
checking for clang... no
checking for nvcc... nvcc
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking xmmintrin.h usability... yes
checking xmmintrin.h presence... yes
checking for xmmintrin.h... yes
checking png.h usability... no
checking png.h presence... no
checking for png.h... no
checking jpeglib.h usability... no
checking jpeglib.h presence... no
checking for jpeglib.h... no
checking fftw3.h usability... no
checking fftw3.h presence... no
checking for fftw3.h... no
checking linear.h usability... no
checking linear.h presence... no
checking for linear.h... no
checking cblas.h usability... yes
checking cblas.h presence... yes
checking for cblas.h... yes
checking tesseract/capi.h usability... no
checking tesseract/capi.h presence... no
checking for tesseract/capi.h... no
checking Accelerate/Accelerate.h usability... no
checking Accelerate/Accelerate.h presence... no
checking for Accelerate/Accelerate.h... no
checking libavcodec/avcodec.h usability... yes
checking libavcodec/avcodec.h presence... yes
checking for libavcodec/avcodec.h... yes
checking libavformat/avformat.h usability... yes
checking libavformat/avformat.h presence... yes
checking for libavformat/avformat.h... yes
checking libswscale/swscale.h usability... yes
checking libswscale/swscale.h presence... yes
checking for libswscale/swscale.h... yes
checking for cos in -lm... yes
checking for cblas_dgemm in -lgslcblas... no
checking for gsl_blas_dgemm in -lgsl... no
checking cuda... no
USE: gcc
COMPILE FLAGS: -msse2 -D HAVE_SSE2 -D HAVE_CBLAS -D HAVE_AVCODEC -D HAVE_AVFORMAT -D HAVE_SWSCALE
LINK FLAGS: -lm -lblas -lavcodec -lavformat -lswscale
configure: creating ./config.status
config.status: creating config.mk
далее делаю make и получаю следующее
roman@roman-VirtualBox:~/ccv/lib$ make
gcc ccv_resample.c -o ccv_resample.o -c -O3 -ffast-math -Wall -msse2 -D HAVE_SSE2 -D HAVE_CBLAS -D HAVE_AVCODEC -D HAVE_AVFORMAT -D HAVE_SWSCALE
gcc: внутренняя ошибка компилятора: Убито (program cc1)
Отправьте подробное сообщение об ошибке
с препроцессированным исходным кодом.
Смотрите инструкции в <file:///usr/share/doc/gcc-4.6/README.Bugs>.
make: *** [ccv_resample.o] Ошибка 4
-
после команды ./configure
получаю следующее
..... checking for libavcodec/avcodec.h... no checking libavformat/avformat.h usability... no checking libavformat/avformat.h presence... no checking for libavformat/avformat.h... no checking libswscale/swscale.h usability... no checking libswscale/swscale.h presence... no checking for libswscale/swscale.h... no checking for cos in -lm... yes checking for cblas_dgemm in -lgslcblas... no checking for gsl_blas_dgemm in -lgsl... no checking cuda... no
правильно я понимаю везде где no надо установить эти библиотеки, где их брать откуда устанавливать поясните пожалуйста) в линуксе я новичок)
-
Добрый день, вот пытаюсь разобраться прочитал, что в библиотеке CCV есть более современные(по сравнению с OpenCV) методы классификации с помощью глубокого обучения свёрточных нейронных сетей вот нашёл пример у них в папке /bin называется cnnclassify.c, но ни как не могу запустить его, возможно кто-то пробовал работать с этой библиотекой, как её надо настроить?.. под windows она вроде бы не работает.. работает только под линукс.. поэтому я пробовал запускать её на ubuntu в netbeans 8.0, но запустить так и не удалось, ошибки сразу при построении причём ругается на функции библиотеки ccv...
-
Добрый день, в samples opencv есть примеры работы детектора latent svm можно даже найти файлы xml для обучения модели детектора они обучены как я понимаю на базе данных INRIA-2007 и есть для каждого из 20-ти классов изображений вопрос в том как их сгенерировать самому для своей задачи?
-
Добрый день, посоветуйте пожалуйста качественный детектор, который мог бы отслеживать либо головы, либо самих людей.. ну в общем случае просто объекты конечно, мне необходимо периодически его запускать для трекинга вот, тут как я вижу два варианта развития событий
1. Сперва запускаем детектор, получаем блобы и их тречим, периодически запуская детектор снова для проверки
2. у нас уже есть блобы полученные каким-то другим способом(к примеру вычитанием фона), но без запуска детектора вот и нам во первых надо убедиться что блобы являются интересующимися объектами для нас ну т.е. что это объекты трекинга вот, и второе надо разъединить несколько людей в одном блобе на разные блобы. Для этого мы так же должны запустить детектор, который уже в блобах и должен выделить человека или сказать что его там нету, возможно что в блобе несколько людей. Пока пробовал стандартные средства в opencv это CascadeClassifier на различных наборах и HOGDescriptor, отработали они достаточно плохо часто вообще просто не видели людей вот. Сейчас я пробую обучить каскады и хога под свою задачу думаю будет получше.
Наверное есть более эффективные детекторы возможно кто сталкивался или работал с этим?..
-
Пока удалить эти полосы не получилось.. странно ещё то, что для фильтра Калмана их нету, а для фильтра частиц они есть...
-
Да да их они в фильтре частиц очень видны поэтому я подумал, что это выбросы самого фильтра) спасибо за подсказку попробую подправить
-
странно сейчас пересматривал повторно запускал трекер с фильтром частиц и такое ощущение, что когда трек рвётся ну начинается время жизни нового объекта, то он показывает эти полосы ну как бы траекторию первую и последнюю точку трека...
-
а вот то что периодически возникают полосы от трека в разные стороны это из-за того, что на частицы влияют другие движущиеся объекты?...
-
Спасибо за ответ ниже даю ссылки на ролики работы трекера с разными фильтрами, фильтром частиц и фильтром Калмана
по роликам можно сказать, что всё же у фильтра Калмана меньше ложняка получается возможно настроил я как-то не так фильтр частиц, но приблизительно такой вариант получался всегда, ниже прикрепил класс фильтр частиц написанный по аналогии с Калманом. Пробовал различные распределения вероятностей для частиц.. особо сильного улучшения не было
//condens->flConfidence[i] = exp(1.0 / (sqrt(diffX * diffX + diffY * diffY))); //condens->flConfidence[i] = exp(-(sqrt(diffX * diffX + diffY * diffY))); //condens->flConfidence[i] = exp(-((diffX*diffX)/(2*diffX * diffX + 2*diffY * diffY)))*exp(-((diffY*diffY)/(2*diffX * diffX + 2*diffY * diffY))); //condens->flConfidence[i] = exp(-((diffX*diffX)/(2*xRange *yRange)))*exp(-((diffY*diffY)/(2*xRange *yRange))); condens->flConfidence[i] = 1.0 / (sqrt(diffX * diffX + diffY * diffY));
- 2
-
большое спасибо за разъяснения по работе фильтра вот ещё вопрос
я составляю класс ParticleFilter по аналогии с классом Kalman из вашей программы. Приведу заголовочный файл
class TKalmanFilter { public: KalmanFilter* kalman; double deltatime; //приращение времени Point2f LastResult; TKalmanFilter(Point2f p,float dt=0.2,float Accel_noise_mag=0.5); ~TKalmanFilter(); Point2f GetPrediction(); Point2f Update(Point2f p, bool DataCorrect); };
для класса ParticleFilter всё довольно похоже(там конечно свои параметры) метод GetPrediction() получается довольно просто cv::Point statePt(condens->State[0], condens->State[1]); и у нас есть точка. а вот метод Point2f Update(Point2f p, bool DataCorrect); пока ставит меня в тупик если смотреть на калмана, то там вызывается специальный метод внутреннего класса Калмана для коррекции// Коррекция Mat estimated = kalman->correct(measurement); LastResult.x=estimated.at<float>(0); //уточняем, используя данные измерений LastResult.y=estimated.at<float>(1);
ничего похожего у CvConDensation я не нашёл... но как-то же надо обновлять координаты...
-
я правильно понимаю если xRange и yRange задают диапазон в котором происходит распределение частиц то мне надо задавать не по всему размеру изображения, а только по выделенному прямоугольнику + какой-то шаг ну т.к. человек (объект) может сместиться.. или даже наверно так просто надо просто задавать распределение частиц внутри каждого прямоугольника вроде бы так...
В случае с несколькими объектами, Вы должны уметь вычислить вероятность принадлежности частицы к конкретному объекту.
а надо ли это делать я не совсем понимаю.. вот у нас есть несколько блобов для каждого из них мы запускаем фильтр частиц он предсказывает для этого блоба следующую координату подобно Калману и всё хорошо... разве может быть такое, что фильтр частиц запущенный для одного блоба покажет направление другого?..
если это возможно.. то задача значительно усложняется вроде бы...
-
спасибо за ссылку разбираюсь ниже прикрепляю код из ссылки
// Example of how to use the OpenCV Particle Filter. // // Stolen largely from morethantechnical.com's nice mouse_kalman project. // #include <iostream> #include <vector> #include <opencv2/highgui/highgui.hpp> #include <opencv2/video/tracking.hpp> #include <opencv2/legacy/legacy.hpp> using namespace std; #define drawCross( center, color, d ) \ line( img, cv::Point( center.x - d, center.y - d ), \ cv::Point( center.x + d, center.y + d ), color, 2, CV_AA, 0); \ line( img, cv::Point( center.x + d, center.y - d ), \ cv::Point( center.x - d, center.y + d ), color, 2, CV_AA, 0 ) struct mouse_info_struct { int x,y; }; struct mouse_info_struct mouse_info = {-1,-1}, last_mouse; vector<cv::Point> mouseV, particleV; int counter = -1; // Define this to proceed one click at a time. //#define CLICK 1 #define PLOT_PARTICLES 1 void on_mouse(int event, int x, int y, int flags, void* param) { #ifdef CLICK if (event == CV_EVENT_LBUTTONUP) #endif { last_mouse = mouse_info; mouse_info.x = x; mouse_info.y = y; counter = 0; } } int main(int argc, char * const argv[]) { cv::Mat img(650, 650, CV_8UC3); char code = (char)-1; cv::namedWindow("mouse particle"); cv::setMouseCallback("mouse particle", on_mouse, 0); cv::Mat_<float> measurement(2,1); measurement.setTo(cv::Scalar(0)); int dim = 2; int nParticles = 25; float xRange = 650.0; float yRange = 650.0; float minRange[] = { 0, 0 }; float maxRange[] = { xRange, yRange }; CvMat LB, UB; cvInitMatHeader(&LB, 2, 1, CV_32FC1, minRange); cvInitMatHeader(&UB, 2, 1, CV_32FC1, maxRange); CvConDensation* condens = cvCreateConDensation(dim, dim, nParticles); cvConDensInitSampleSet(condens, &LB, &UB); // The OpenCV documentation doesn't tell you to initialize this // transition matrix, but you have to do it. For this 2D example, // we're just using a 2x2 identity matrix. I'm sure there's a slicker // way to do this, left as an exercise for the reader. condens->DynamMatr[0] = 1.0; condens->DynamMatr[1] = 0.0; condens->DynamMatr[2] = 0.0; condens->DynamMatr[3] = 1.0; for(; { if (mouse_info.x < 0 || mouse_info.y < 0) { imshow("mouse particle", img); cv::waitKey(30); continue; } mouseV.clear(); particleV.clear(); for(; { code = (char)cv::waitKey(100); if( code > 0 ) break; #ifdef CLICK if (counter++ > 0) { continue; } #endif measurement(0) = mouse_info.x; measurement(1) = mouse_info.y; cv::Point measPt(measurement(0),measurement(1)); mouseV.push_back(measPt); // Clear screen img = cv::Scalar::all(100); for (int i = 0; i < condens->SamplesNum; i++) { float diffX = (measurement(0) - condens->flSamples[i][0])/xRange; float diffY = (measurement(1) - condens->flSamples[i][1])/yRange; condens->flConfidence[i] = 1.0 / (sqrt(diffX * diffX + diffY * diffY)); // plot particles #ifdef PLOT_PARTICLES cv::Point partPt(condens->flSamples[i][0], condens->flSamples[i][1]); drawCross(partPt , cv::Scalar(255,0,255), 2); #endif } cvConDensUpdateByTime(condens); cv::Point statePt(condens->State[0], condens->State[1]); particleV.push_back(statePt); // plot points drawCross( statePt, cv::Scalar(255,255,255), 5 ); drawCross( measPt, cv::Scalar(0,0,255), 5 ); for (int i = 0; i < mouseV.size() - 1; i++) { line(img, mouseV[i], mouseV[i+1], cv::Scalar(255,255,0), 1); } for (int i = 0; i < particleV.size() - 1; i++) { line(img, particleV[i], particleV[i+1], cv::Scalar(0,255,0), 1); } imshow( "mouse particle", img ); } if( code == 27 || code == 'q' || code == 'Q' ) break; } return 0; } [/code]
не могли бы вы пояснить что такое тут
float xRange = 650.0;
float yRange = 650.0;
что это за диапазон такой.. не понятно...
и ещё я собрался попробовать заменить в программе выложенной выше фильтр Калмана на фильтр частиц, в связи с этим возникли следующие вопросы. Могу ли я вообще это делать ну т.к. на пример в случае с тараканами движущихся областей много не будет ли фильтр частиц запущенный для i-го таракана перескакивать на j-го таракана... или это в принципе невозможно?..
Библиотека сверточных нейронных сетей
в Вопросы по нейросетям и ИИ
Опубликовано · Report reply
всем привет, разбираюсь с библиотекой http://conv-net.sourceforge.net/doc/index.html там реализована свёрточная сеть на С++ с использованием opencv.. может кто работал с этой библиотекой. У меня даже xml не может загрузиться вроде бы делаю всё правильно, пробовал загружать mnist.xml и sample.xml результат один
вылет происходит тут
ну а потом сообщение о вылете получаем тут