Jump to content
Compvision.ru
Sign in to follow this  
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);

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites
подскажи более подробней....потому как я попытался доступится как avg[x][y] мне писало ероры...

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

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

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

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

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

Share this post


Link to post
Share on other sites
подскажи более подробней....потому как я попытался доступится как 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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×