BriGaDir 0 Жалоба Опубликовано February 12, 2011 Как с этим бороться??? Сегодня первый день как начал работать с OpenCV ... не могу иправить ошибку ... код компилится но после загрузки картинки выдает ошибку ... Судя по все картинки перед тем как передавать в функция cvCornerHarris() надо как то конвертнуть, а теперь внимание вопрос ...как???? IplImage *img; IplImage *img1; img = cvLoadImage( OpenDialog1->FileName.c_str() , 1 ); img1 = cvCloneImage( img ); cvCornerHarris( img, img1, 10, 3, 0.04 ); cvNamedWindow( "original", 1 ); cvShowImage( "original", img1 ); Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Nuzhny 243 Жалоба Опубликовано February 12, 2011 img = cvLoadImage( OpenDialog1->FileName.c_str() , 0); Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
BriGaDir 0 Жалоба Опубликовано February 12, 2011 Спасибо за ответ! Но ошбка осталась, при загрузке *.bmp файла вылетает таже оштбка, при зарузке *.jpg - Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Nuzhny 243 Жалоба Опубликовано February 12, 2011 При выполнении какой строки появляется ошибка? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
BriGaDir 0 Жалоба Опубликовано February 12, 2011 cvCornerHarris( img, img1, 10, 3, 0.04 ); Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Nuzhny 243 Жалоба Опубликовано February 13, 2011 Выходной параметр должен быть матрицей с типом CV_32FC1 (то есть обычный float). Создай её и подавай вместо img1. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
BriGaDir 0 Жалоба Опубликовано February 13, 2011 if( OpenDialog1->Execute() ) { IplImage *img; img = cvLoadImage( OpenDialog1->FileName.c_str() , 0 ); float *imege1; imege1 = new float [ img->width * img->height ]; cvCornerHarris( img, imege1, 10, 3, 0.04 ); // вот на этой строке вылетает ошибка ... cvNamedWindow( "original", 1 ); cvShowImage( "original", imege1 ); } В результате выполнения вылетает ошибка ... Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Nuzhny 243 Жалоба Опубликовано February 13, 2011 Матрицей, значит, типа CvMat, созданной с помощью функции cvCreateMat. 1 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
BriGaDir 0 Жалоба Опубликовано March 2, 2011 Юзаю openCV1.1pre1 прикрученную к C++Builder 6. Помогите исправить ошибку .... CvMemStorage* storage = cvCreateMemStorage(0); Memo2->Clear(); IplImage* object = cvLoadImage( LeftImage.Name.c_str(), CV_LOAD_IMAGE_GRAYSCALE ); IplImage* image = cvLoadImage( RightImage.Name.c_str(), CV_LOAD_IMAGE_GRAYSCALE ); if( !object || !image ) { Memo2->Lines->Add( "Error! Ïðè çàãðóçêå èçîáðàæåíèé ïðîèçîøëà îøèáêà!" ); return; } cvNamedWindow( "Object", 1 ); cvShowImage( "Object", object ); IplImage* object_color = cvCreateImage(cvGetSize(object), 8, 3); // методом коментирования кода // была вычислина строка к которой ошибка // ( скрин ошибки приведен ниже ) cvCvtColor( object, object_color, CV_GRAY2BGR ); CvSeq *objectKeypoints = 0, *objectDescriptors = 0; CvSeq *imageKeypoints = 0, *imageDescriptors = 0; Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано March 2, 2011 cvGetSize(object) не работает скорее всего. 1 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах