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

AZIP

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

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

  • Посещение

Репутация

0 Новичек

О AZIP

  • Звание
    Новичок
  1. Проблемы с cvSolve()

    Проблема решена!) Я как-то криво вводил данные в матрицу _А (слишком намудрил))): void Analiser::SetFeatures(int col) { int step = _A->step/sizeof(double); double *data = _A->data.db; double *dataA = _B->data.db; for (int i=0;i<10;i++) { cvmSet(_A,i,col,cvmGet(_B,i,0)); //(data+step*i)[col]=(dataA+step*i)[0]; //!! Вот тут и была проблема } } Как говорится, нужно быть по-проще))Еще раз благодарю Вас)
  2. Проблемы с cvSolve()

    Спасибо Вам огромное)
  3. Проблемы с cvSolve()

    Это опять я) нашел кое-кую багу: CvMat* ATA = cvCreateMat(2,2,CV_64FC1); cvMatMul(AT,_A,ATA); после этого умножения, в [АТА] ОЧЕНЬ болшие числа 3.9406234902248240e+133... может я не правильно создаю матрицы?(( В исходных матрицах числа порядка 0,01...1.0
  4. Проблемы с cvSolve()

    Литературу не смогу... просто вот так вот сели и решили)) может поможет скрин с екселя.... http://dl.dropbox.com/u/66127184/screen.PNG а пока буду разбиратся(
  5. Проблемы с cvSolve()

    Спасибо, может уже и не по теме..но есть и второй вариант решения)(соответственно тоже безуспешый, хотя в Excell даная модель работала...) //Transpose [A] matrix CvMat* AT = cvCreateMat(2,10,CV_64FC1); cvTranspose(_A,AT); ////Multiply [At] x [A] CvMat* ATA = cvCreateMat(2,2,CV_64FC1); cvMatMul(AT,_A,ATA); //Multiply [At] x CvMat* ATB = cvCreateMat(2,1,CV_64FC1); cvMatMul(AT,_B,ATB); //Invert [AtxA] matrix CvMat* ATAi = cvCreateMat(2,2,CV_64FC1); cvInvert(ATA,ATAi); //Finally, [AtxA]^-1 x [AtxB] CvMat* RES = cvCreateMat(2,1,CV_64FC1); cvMatMul(ATAi,ATB,RES); В результате 0.00 и 0.00 Простите, что сколько вопросов) но может еще есть надежа?)
  6. Проблемы с cvSolve()

    Привет всем. Делаю проект по распознаванию эмоций и наткнулся на проблему. Нужно решить систему уравнений: CvMat *_A, *_B, *_X; _A= cvCreateMat(10,2,CV_64FC1); _B = cvCreateMat(10,1,CV_64FC1); _X = cvCreateMat(10,1,CV_64FC1); Данные ввожу таким вот путем: double *data = _B->data.db; (data)[0] = EyeWidth()/b; (data)[1] = EyeHeight()/b; ... Функции EyeWidth() и т.д. возвращают нормальные double значения. Матрица _А, в первой колонке коефициенты для одно емоции, в второй - другой (тоесть, они не могут быть одинаковыми): int step = _A->step/sizeof(double); double *data = _A->data.db; double *dataA = _B->data.db; for (int i=0;i<10;i++) { (data+step*i)[col]=(dataA+step*i)[0]; } Собственно решение: CvMat* RES = cvCreateMat(2,1,CV_64FC1); cvSolve(_A,_B,RES,CV_LU); double *data = RES->data.db; _happy=(data)[0]; _sad=(data)[1]; _happy і _sad возвращают одинаковые значение -1.4216995963440653e-068 (или что-то в этом роде). Подскажите, пожалуйста, что я сделал не так? Может дело в методе решения? Очень нужно ( Заранее спасибо всем.
×