1

我正在做一个无法使用 opencv 库的项目。所以我试图查看源代码并根据需要修改和使用其中的一些。

但是我的 cvCreateData(..) 函数有问题,当我进入函数内部时,他们使用结构 'CvIPL' 来表示 'CvIPL.allocateData' 但是当我右键单击它并尝试去定义时,它说不找到定义。

我用“CvIPL”谷歌搜索,我在“array.cpp”中找到了它,它的状态是这样的——

static struct
{
    Cv_iplCreateImageHeader  createHeader;
    Cv_iplAllocateImageData  allocateData;
    Cv_iplDeallocate  deallocate;
    Cv_iplCreateROI  createROI;
    Cv_iplCloneImage  cloneImage;
}
CvIPL;

现在的问题是我不知道什么是 Cv_iplCreateImageHeader,Cv_iplAllocateImageData... 并且当我右键单击它们时找不到它们的任何定义。

谁能告诉我 Cv_iplCreateImageHeader,Cv_iplAllocateImageData 的类型是什么...或者我在哪里可以找到一些关于 tehm 的定义?

4

1 回答 1

1

如果您仍然需要这个,这里是答案:

我正在使用 MS Visual Studio 2005。右键单击并查找符号信息对我来说很好。但是当有疑问时(我经常是:),使用 grep!使用cygwin,我跑了

cd ~/opencv
find . | xargs grep -l Cv_iplCreateImageHeader

列出的文件之一是./modules/core/include/opencv2/core/core_c.h,其中包含以下行

typedef IplImage* (CV_STDCALL* Cv_iplCreateImageHeader)
                            (int,int,int,char*,char*,int,int,int,int,int,
                            IplROI*,IplImage*,void*,IplTileInfo*);
typedef void (CV_STDCALL* Cv_iplAllocateImageData)(IplImage*,int,int);
typedef void (CV_STDCALL* Cv_iplDeallocate)(IplImage*,int);
typedef IplROI* (CV_STDCALL* Cv_iplCreateROI)(int,int,int,int,int);
typedef IplImage* (CV_STDCALL* Cv_iplCloneImage)(const IplImage*);

所以基本上,CvIPL是一个抽象虚拟类,createHeader其他成员是具有类型Cv_iplCreateImageHeader等的虚拟函数。它就像 C++,但用 C 编写。

于 2013-02-15T17:28:07.113 回答