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

cvCalcEigenObjects

Recommended Posts

Возвращает белый квадрат :(

  // 2 картинки инпута

IplImage **input = new IplImage*[2];

input[0] = new IplImage;

input[1] = new IplImage;

// преобразовываю картинки в ЧБ цвет

IplImage *temp;

temp=cvLoadImage("image1.jpg",1);

input[0]=cvCreateImage(cvSize( 160,120 ), IPL_DEPTH_8U, 1);

cvCvtColor(temp, input[0], CV_BGR2GRAY);

cvReleaseImage(&temp);

temp=cvLoadImage("image2.jpg",1);

input[1]=cvCreateImage(cvSize( 160,120), IPL_DEPTH_8U, 1);

cvCvtColor(temp, input[1], CV_BGR2GRAY);

// ГОТОВЛЮ output'ы

IplImage **output = new IplImage*[2];

for(int i=0;i<2;i++) {output=new IplImage; output=cvCreateImage(cvSize(160,120), IPL_DEPTH_32F, 1); }

// сюда в avg поидее придет то что мне нужно(!)

IplImage *avg=cvCreateImage(cvSize(160,120), IPL_DEPTH_32F, 1);

// готовлю

CvTermCriteria term;

term.type= CV_TERMCRIT_ITER | CV_TERMCRIT_EPS;

term.max_iter=10;

term.epsilon=0.1;

float vals[2];

cvCalcEigenObjects(2, input, output, 0, 0, 0, &term, avg, vals);

cvSaveImage("image0.jpg", avg);

//Все, белый лист, непойму в чем дело

Все, не могу понять почему так...:) помогите)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А аутпуты черные... почти черные... иногда видно что там чтото есть но настколько темное что трудно рассмотреть.. такое ощущение что картинку затемнили специально:( может параметр гдето попустил

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В avg , скорее всего, лежат слишком маленькие значения (с плавающей точкой), надо просто его привести к диапазону 0-255 и все будет хорошо видно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

подскажи более подробней....потому как я попытался доступится как avg[x][y] мне писало ероры...

как вытянуть мин/макс? cvMin?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
подскажи более подробней....потому как я попытался доступится как avg[x][y] мне писало ероры...

как вытянуть мин/макс? cvMin?

RTFM для обычного доступа.

Удобно использовать макросы: CV_IMAGE_ELEM(img, uchar, i, j)

cvMinMaxLoc для максимума и минимума.

Изображение можно нормализовать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
подскажи более подробней....потому как я попытался доступится как avg[x][y] мне писало ероры...

как вытянуть мин/макс? cvMin?

Ну вот так, например:

Определяем макс. и мин. эл-ты:

void cvMinMaxLoc( const CvArr* arr, double* min_val, double* max_val,

CvPoint* min_loc=NULL, CvPoint* max_loc=NULL, const CvArr* mask=NULL );

Переводим изображеие в однослойное восьмибитное

gray - тип CV_8U, одноканальная (серая).

cvCvtScale( avg, gray, здесь масштаб, здесь сдвиг );

Работает так:

dst(I)=src(I)*scale + shift

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×