Ошибка C3861: «cvPyrSegmentation»: идентификатор не найден

Не могли бы вы помочь мне ??? Получение ошибки при выполнении кода ниже. Я новичок в использовании 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

0

Решение

Вы не включили правильный заголовок, судя по всему.

#include <opencv2/imgproc/imgproc_c.hpp>
1

Другие решения

Ваш компилятор не может понять, что команда cvPyrSegmentation средства. Ваши решения:

  1. Эта конкретная функция на самом деле не существует, и вы читаете неправильную документацию (я не могу найти эту функцию в официальном API).

  2. Возможно, вам не хватает файла заголовка. Вернитесь к тому примеру, которому вы будете следовать, и переделайте его в точности так, как они демонстрируют. Если вы не следуете примеру, найдите его; это почти всегда лучший способ решить проблему.

  3. Возможно, вам не хватает нескольких флагов, которые вы должны передать компилятору. Если вы знакомы с использованием библиотек, вы поймете, что я имею в виду. Если вы не знакомы с использованием библиотек в C, сначала посмотрите, как их использовать. Я предлагаю GMP.

Если вы не можете найти пример, оставьте комментарий, и я отредактирую один раз, когда найду один.

0

добавлять #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>
0

Вам нужно :
1) сначала включите legacy.hpp (обычно в opencv2 / legacy / legacy.hpp)

2) убедитесь, что legacy.hpp находится в «дополнительных зависимостях» входных данных компоновщика (я предполагаю, что вы используете Visual C ++)

0
По вопросам рекламы [email protected]