BashOrgRu 0 Жалоба Опубликовано June 1, 2009 Возвращает белый квадрат // 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); //Все, белый лист, непойму в чем дело Все, не могу понять почему так... помогите) Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
BashOrgRu 0 Жалоба Опубликовано June 1, 2009 А аутпуты черные... почти черные... иногда видно что там чтото есть но настколько темное что трудно рассмотреть.. такое ощущение что картинку затемнили специально может параметр гдето попустил Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано June 2, 2009 В avg , скорее всего, лежат слишком маленькие значения (с плавающей точкой), надо просто его привести к диапазону 0-255 и все будет хорошо видно. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
BashOrgRu 0 Жалоба Опубликовано June 2, 2009 подскажи более подробней....потому как я попытался доступится как avg[x][y] мне писало ероры... как вытянуть мин/макс? cvMin? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Cfr 1 Жалоба Опубликовано June 2, 2009 подскажи более подробней....потому как я попытался доступится как avg[x][y] мне писало ероры... как вытянуть мин/макс? cvMin? RTFM для обычного доступа. Удобно использовать макросы: CV_IMAGE_ELEM(img, uchar, i, j) cvMinMaxLoc для максимума и минимума. Изображение можно нормализовать. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано June 2, 2009 подскажи более подробней....потому как я попытался доступится как 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 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах