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

但是我在使用cvCreateData(..)函数时遇到问题,当我进入该函数时,它们使用结构'CvIPL'表示'CvIPL.allocateData',但是当我右键单击它并尝试转到定义时,它说不找到定义。

我用“CvIPL”在Google上搜索,然后在“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的定义?

最佳答案

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

我正在使用MS Visual Studio2005。右键单击并查找符号信息对我来说很好。但是如果有疑问(我经常是:),请使用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编写。

关于c++ - CvIPL定义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14394716/

10-10 05:22