Не могли бы вы помочь мне ??? Получение ошибки при выполнении кода ниже. Я новичок в использовании OpenCV. Мой учитель — мистер Гугл, а вы, ребята, являетесь экспертом в этой области.
IntelliSense: идентификатор «cvPyrSegmentation» не определен
Ошибка C3861: «cvPyrSegmentation»: идентификатор не найден
#include "opencv2/imgproc/imgproc.hpp"#include "opencv2/highgui/highgui.hpp"#include <stdlib.h>
#include <stdio.h>static void help(void)
{
printf("\nThis program present the function of pyramid segmentation which is
cvcvPyrSegmentation()\n""we can controlled the value of threshold by creating
the taskbar\n""Usage :\n");
}
IplImage* image[2] = { 0, 0 }, *image0 = 0, *image1 = 0;
CvSize size;
int w0, h0,i;
int threshold1, threshold2;
int l,level = 4;
int sthreshold1, sthreshold2;
int l_comp;
int block_size = 1000;
float parameter;
double threshold;
double rezult, min_rezult;
int filter = CV_GAUSSIAN_5x5;
CvConnectedComp *cur_comp, min_comp;
CvSeq *comp;
CvMemStorage *storage;
CvPoint pt1, pt2;static void START_SEGMENT(int a)
{
(void) a;
cvPyrSegmentation (image0, image1, storage, &comp, level, threshold1+1,
threshold2+1);
cvShowImage("Segmentation", image1);
}
int main( int argc, char** argv )
{
char* filename;
help();
filename = argc == 2 ? argv[1] : (char*)"C:/Users/acer/Documents/Visual Studio
2012/Projects/me2.jpg";
if( (image[0] = cvLoadImage( filename, 1)) == 0 )
{
help();
printf("Cannot load fileimage - %s\n", filename);
return -1;
}cvNamedWindow("Source", 0);
cvShowImage("Source", image[0]);
cvNamedWindow("Segmentation", 0);
storage = cvCreateMemStorage ( block_size );
image[0]->width &= -(1<<level);
image[0]->height &= -(1<<level);
image0 = cvCloneImage( image[0] );
image1 = cvCloneImage( image[0] );
// segmentation of the color image
l = 1;
threshold1 =255;
threshold2 =30;
START_SEGMENT(1);
sthreshold1 = cvCreateTrackbar("Threshold1", "Segmentation", &threshold1, 255,
START_SEGMENT);
sthreshold2 = cvCreateTrackbar("Threshold2", "Segmentation", &threshold2, 255,
START_SEGMENT);
cvShowImage("Segmentation", image1);
cvWaitKey(0);
cvDestroyWindow("Segmentation");
cvDestroyWindow("Source");
cvReleaseMemStorage(&storage );
cvReleaseImage(&image[0]);
cvReleaseImage(&image0);
cvReleaseImage(&image1);
return 0;
}
#ifdef _EiC
main(1,"pyramid_segmentation.c");
#endif
Вы не включили правильный заголовок, судя по всему.
#include <opencv2/imgproc/imgproc_c.hpp>
Ваш компилятор не может понять, что команда cvPyrSegmentation
средства. Ваши решения:
Эта конкретная функция на самом деле не существует, и вы читаете неправильную документацию (я не могу найти эту функцию в официальном API).
Возможно, вам не хватает файла заголовка. Вернитесь к тому примеру, которому вы будете следовать, и переделайте его в точности так, как они демонстрируют. Если вы не следуете примеру, найдите его; это почти всегда лучший способ решить проблему.
Возможно, вам не хватает нескольких флагов, которые вы должны передать компилятору. Если вы знакомы с использованием библиотек, вы поймете, что я имею в виду. Если вы не знакомы с использованием библиотек в C, сначала посмотрите, как их использовать. Я предлагаю GMP.
Если вы не можете найти пример, оставьте комментарий, и я отредактирую один раз, когда найду один.
добавлять #include<cvaux.h>
где лежит функция cvPyrSegmentation.
PS: все файлы должны быть включены для гарантии …
#include<cv.h>
#include <cvaux.h>
#include <opencv\cxcore.hpp>
#include <opencv.hpp>
#include <nonfree.hpp>
#include <core/core.hpp>
#include <imgproc/imgproc.hpp>
#include <imgproc/imgproc_c.h>
#include <highgui.h>
Вам нужно :
1) сначала включите legacy.hpp (обычно в opencv2 / legacy / legacy.hpp)
2) убедитесь, что legacy.hpp находится в «дополнительных зависимостях» входных данных компоновщика (я предполагаю, что вы используете Visual C ++)