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

kames

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

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

  • Посещение

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

  1. createsamplase баг или я туплю

    Добрый день форумчане сделал вот такую штуку opencv_createsamples.exe -img D:\test.jpg -num 75 -bg D:\negative.txt -vec D:\samples.vec -maxxangle 0 -maxyangle 0 -maxzangle 0 -maxidev 20 -bgcolor 0 -bgthresh 10 -w 480 -h 640 -show сам кубик у меня 106 на 106 пикселей задний фон 480 на 640 на почему то получаю вот такую картинку
  2. OpenCV поиск синего шарика

    Имеется код программы взят http://blog.vidikon.com/?p=479 #include <opencv2/video/tracking.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <opencv2/highgui/highgui.hpp> using namespace cv; using namespace std; void FindBall(IplImage* Img); void Counter(IplImage* img); CvPoint2D32f center; float radius; long pointer=0; int main( int argc, char** argv ) { CvCapture *capture = cvCreateCameraCapture(CV_CAP_ANY); cvNamedWindow( "Demo", 1 ); for(; { IplImage* frame = 0; int c; frame = cvQueryFrame( capture ); if( !frame ) break; FindBall(frame); cvShowImage( "Demo", frame ); c = cvWaitKey(50); if( (char)c == 27 ) break; pointer++; } cvWaitKey(0); cvReleaseCapture( &capture ); cvDestroyWindow("Demo"); return 0; } void FindBall(IplImage* Img) { IplImage* Image=cvCreateImage( cvGetSize(Img), 8, 3 ); cvCopy(Img,Image); uchar* ptr1; ptr1 = (uchar*) (Image->imageData ); int i,j; for(i=0;i<Img->height;i++) for(j=0;j<Img->width;j++) { if (ptr1[j*3+i*Image->widthStep]>3*ptr1[j*3+1+i*Image->widthStep] && ptr1[j*3+i*Image->widthStep]>3*ptr1[j*3+2+i*Image->widthStep]) { ptr1[j*3+i*Image->widthStep]=255; ptr1[j*3+1+i*Image->widthStep]=255; ptr1[j*3+2+i*Image->widthStep]=255; } else { ptr1[j*3+i*Image->widthStep]=0; ptr1[j*3+1+i*Image->widthStep]=0; ptr1[j*3+2+i*Image->widthStep]=0; } } Counter(Image); if (center.x>-1) { CvPoint p; p.x=center.x; p.y=center.y; cvCircle( Img, p, radius, CV_RGB(255,0,0), 3, 8, 0 ); } cvReleaseImage( &Image ); } void Counter(IplImage* img) { IplImage* img_gray= cvCreateImage( cvSize(img->width,img->height), 8, 1); CvSeq* contours = 0; CvMemStorage* storage = cvCreateMemStorage(0); cvCvtColor( img, img_gray, CV_BGR2GRAY ); cvFindContours( img_gray, storage, &contours, sizeof(CvContour), CV_RETR_LIST , CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0) ); CvSeq* h_next=0; for( CvSeq* c=contours; c!=NULL; c=c->h_next ) { if (c!=contours) { if (h_next->total>=c->total) { h_next->h_next=h_next->h_next->h_next; continue; } } h_next=c; } center.x=-1; if (h_next->total<200) return; cvDrawContours( img, h_next, CV_RGB(255,0,0), CV_RGB(0,255,0),2, 2, CV_AA, cvPoint(0,0) ); cvMinEnclosingCircle(h_next,&center,&radius); cvReleaseMemStorage( &storage); cvReleaseImage( &img_gray ); } Так вот тут я поменял коофиценты чтобы он искал синий шарик но к сожалению он не только шарик определяет но и синий колпачок если его поднести достаточно близко вот код другой программы взят с http://robocraft.ru/blog/computervision/640.html и немного переделанный мной #include <opencv2/video/tracking.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <opencv2/highgui/highgui.hpp> #include <iostream> using namespace cv; using namespace std; void findCircles(IplImage* _image) { assert(_image!=0); IplImage* bin = cvCreateImage( cvGetSize(_image), IPL_DEPTH_8U, 1); cvConvertImage(_image, bin, CV_BGR2GRAY); cvCanny(bin, bin, 50, 200); CvMemStorage* storage = cvCreateMemStorage(0); CvSeq* contours=0; int contoursCont = cvFindContours( bin, storage,&contours,sizeof(CvContour),CV_RETR_EXTERNAL,CV_CHAIN_APPROX_SIMPLE,cvPoint(0,0)); contours = cvApproxPoly( contours, sizeof(CvContour), storage, CV_POLY_APPROX_DP, 3, 1 ); assert(contours!=0); for( CvSeq* current = contours; current != NULL; current = current->h_next ){ // вычисляем площадь и периметр контура double area = fabs(cvContourArea(current)); double perim = cvContourPerimeter(current); // 1/4*CV_PI = 0,079577 if ( area / (perim * perim) > 0.07 && area / (perim * perim)< 0.9 ){ // в 10% интервале // нарисуем контур cvDrawContours(_image, current, cvScalar(0, 0, 255), cvScalar(0, 255, 0), -1, 4, 8); } } cvReleaseMemStorage(&storage); cvReleaseImage(&bin); } int main(int argc, char* argv[]) { cvNamedWindow("capture"); cvNamedWindow("image"); CvCapture *capture = cvCreateCameraCapture(CV_CAP_ANY); assert(capture!=0); IplImage* frame = 0; //IplImage* dst = 0; //CvSeq* contours = 0; while(true){ frame = cvQueryFrame( capture ); cvShowImage("capture", frame); // dst = cvCreateImage( cvGetSize(frame), IPL_DEPTH_8U, 3 ); findCircles(frame); cvShowImage("image", frame); // cvShowImage("ima", dts); char c = cvWaitKey(1); if (c == 27) { break; } } cvReleaseCapture( &capture ); // cvReleaseImage(&dst); cvDestroyAllWindows(); }[/code] но он к сожалению тоже не корректно работает он определяет только в идеале т.е нарисованный на бумаге круг а шарик не видит в каком направление мне двигаться?как их объединить чтобы найти синий шарик?
  3. Получение цвета в hsv

    Есть программа расспознания кубика рубика нужно будет получить цвета с hsv изображения трудность состоит в том что интенсивность цветов прыгает в разных пределах пробывал делать нечто подобное http://robocraft.ru/blog/computervision/1063.html не подходим разом разпознаёт разом нет
  4. Получение цвета в hsv

    как я понял нужно использовать гистограмму ?
  5. Получение цвета в hsv

    я немного не правильно сформулировал вопрос дана картинка в hsv мы знаешь координаты пикселя нужно будет опрделить к какому из 6 цветов он относится к белому красному зелёному синему оранжевому или жёлтому.
  6. Получение цвета в hsv

    Окей)спс щас глянем)
  7. createsamplase баг или я туплю

    каскад обучился плохо много лишнего выделяет Подскажите что делать?какие настройки оптимальны для расспознаия по моей теме ?
  8. createsamplase баг или я туплю

    Наконец мой каскад обучился =)у кого есть норм ссылки чтобы проверить его работоспособность только не через утилиту pperformance
  9. createsamplase баг или я туплю

    Кстати в примерах этого век файла Лицо тоже растянуто почти на весь фон значит так и должно быть?значит у меня прога правильно делает что растягивает кубик почти на весь фон?
  10. createsamplase баг или я туплю

    может кто-нибудь продемонстратировать свои приверы в век файле
  11. createsamplase баг или я туплю

    Обычно у всех позитивное изображение расстягивается на фоновом и не уменьшается?
  12. createsamplase баг или я туплю

    Во спасибо огромное теперь всё понял =)завтра создам тогда образцы и буду обучать каскад хаара там скорей всего тоже будут вопросы =(
  13. createsamplase баг или я туплю

    у меня немного не укладывается в голове как происходит обучение там не важен задний фон его используют типа просто для справки?
  14. createsamplase баг или я туплю

    Вижу сейчас только один выход понакачать картинок а потом с помощью батника запихнуть их в негатив.дат но хотелось бы сделать не таким способом
  15. createsamplase баг или я туплю

    да получил кубик который размерами не 106 на 106 а 480 на 480 вроде короче гораздо больше чем он должен быть и таким он был на всех фотографиях при -h 480 -w 640
  16. createsamplase баг или я туплю

    пробывал изменить параметры не помогло
  17. createsamplase баг или я туплю

    1.нет отключать искажения не пробывал пробывал задавать -show 0.1 не помогло 2.Параметры работают поворачивает и меняет цвет отличие только в количестве выходных данных в первом равно num а во втором равно числу негативных 3.Думал так диапозон всех возможных вариантов будет шире
  18. createsamplase баг или я туплю

    а как тогда получить больше образцов?opencv_createsamples.exe -img D:\test.jpg -num 50000 -bg D:\negative.dat -vec D:\samples.vec -randinv -maxxangle 1.1 -maxyangle 1.1 -maxzangle 0.5 -maxidev 20 -bgcolor 0 -bgthresh 10 -w 106 -h 106 вот так я получу 5000 образцов но только там кубик увеличенный как на фотках а так opencv_createsamples.exe -img D:\test.jpg -num 50000 -bg D:\negative.dat -info D:\test.dat -randinv -maxxangle 1.1 -maxyangle 1.1 -maxzangle 0.5 -maxidev 20 -bgcolor 0 -bgthresh 10 -w 106 -h 106 я получу 14 образцов столько же сколько у меня негативов и кубик как раз такой как мне нужно как нафотке2.как мне получить не 14 образцов а 50000 или чуть меньше с 14 негативными фотками если добавляю фотку то и количество создаваемых образцов увеличивается
  19. createsamplase баг или я туплю

    Да я им как раз в основном и руководствовался спасибо за ответ
  20. createsamplase баг или я туплю

    Столкнулся с такой проблемой если использую такое opencv_createsamples.exe -img D:\test.jpg -num 50000 -bg D:\negative.dat -vec D:\samples.vec -randinv -maxxangle 1.1 -maxyangle 1.1 -maxzangle 0.5 -maxidev 20 -bgcolor 0 -bgthresh 10 -w 106 -h 106 то получаю если использую opencv_createsamples.exe -img D:\test.jpg -num 50000 -bg D:\negative.dat -info D:\test.dat -randinv -maxxangle 1.1 -maxyangle 1.1 -maxzangle 0.5 -maxidev 20 -bgcolor 0 -bgthresh 10 -w 106 -h 106 то получаю то что как раз надо только оно ограниченно числом негативных образцов если их 13 то он создаст только 13 штук а первый способ создаст 5000 штук даже если негативных будет 13 но кубик там получается растянутый
  21. createsamplase баг или я туплю

    у меня 1 положительный образец и 13 отрицательных .Вопрос если я встречу отрицательный образец которого у меня нет он расспознает полож образ или ничего не произойдёт?я плохо в этом всё понимаю
  22. createsamplase баг или я туплю

    в чём ошибка? opencv_createsamples.exe -img D:\test.jpg -num 50000 -bg D:\negative.dat -vec D:\samples.vec -randinv -maxxangle 1.1 -maxyangle 1.1 -maxzangle 0.5 -maxidev 20 -bgcolor 0 -bgthresh 10 -w 106 -h 106 opencv_haartraining.exe -data 234 -vec D:\samples.vec -bg D:\negative.dat -npos 5000 -nneg 7500 -nstages 8 -nsplits 2 -mem 3072 -nonsym -minhitrate 0.999900 -maxfalsealarm 0.500000 -weighttrimming 0.950000 -mode ALL -w 106 -h 106
  23. Распознание предмета

    Добрый день форумчани стала такая задача как расспознание квадратов одинаковых размеров но разных цветов и запись их в массив последовательности 1 2 3 квадрат а не так чтобы допустим 3 распознался он и записал первый в массив да и ещё цвета квадратов меняются но есть определённый диапозон цветов.как реализовать запись в массив цвета 1 2 и 3 квадрата?
  24. Распознание предмета

    Помогите разобраться с Хаара.нашёл на форуме что то подобное opencv_createsamples.exe -img overview.jpg -num 75 -bg negatives.dat -vec samples.vec -maxxangle 0 -maxyangle 0 -maxzangle 0 -maxidev 20 -bgcolor 0 -bgthresh 10 -w 1024 -h 768 -show overview.jpg-наше искомое изображение т.е мне нужно будет вырезать допустим кубик из изображения или можно оставить его с фоном? 75-число образцов negatives.dat-наше негативные изображения вопрос если я буду показывать кубик на негативном фоне которого нет в базе он у меня расспознается? samples.vec-выходные изображения -maxxangle 0 -maxyangle 0 -maxzangle 0 углы -maxidev 20-максимальное допустимое колебание точек -bgcolor 0-цвет фона -bgthresh 10 вроде как размытие что ли -w 1024 -h 768 -show размеры нашего изображения всё верно?
  25. Распознание предмета

    Решил сделать с помощью каскада хаара какую литературу почитать чтобы разобраться как происходить обучение(я новичок)
×