【发布时间】:2013-12-31 03:46:04
【问题描述】:
实际上下面的代码是我试图执行的。当我尝试使用 Microsoft Visual Studio 2012 执行此操作时,出现错误。
错误错误LNK2019:函数“void __cdecl START_SEGMENT(int)”(?START_SEGMENT@@YAXH@Z)中引用的未解析的外部符号_cvPyrSegmentation (?START_SEGMENT@@YAXH@Z)
错误错误 LNK1120:1 个未解决的外部问题
但我让我的朋友使用他的笔记本电脑执行此代码,它工作得很好。没有错误。但是他使用的是 Microsoft Visual Studio 2010 而不是我使用 Visual Studio 2012。我想知道为什么我执行此代码时会出错,但当我的朋友执行它时却没有错误。
所以我删除了一些标题,编码看起来像我从一开始就要求的那个(来自这个Question。那个带有“”错误错误C3861:'cvPyrSegmentation':找不到标识符“”.. 删除一些标题后,不再有错误 LNK1120。但是有“”Error error C3861: 'cvPyrSegmentation': identifier not found“”...
Blank ...对于新手来说错误太多。学习过程从来都不是一件容易的事。yeahhh!
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc_c.h>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/legacy/legacy.hpp>
#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
【问题讨论】:
-
检查并添加必要的库。比如 - "C:\Program Files\OpenCV\lib\cv.lib“ "C:\Program Files\OpenCV\lib\cvaux.lib“ "C:\Program Files\OpenCV\lib\cxcore.lib“ "C: \Program Files\OpenCV\lib\cvcam.lib“ "C:\Program Files\OpenCV\lib\highgui.lib"
标签: visual-studio syntax-error