我对OpenCV的一个函数有一个非常奇怪(相当不可能)的问题 - 传递给cvGetSize
, 内部的指针cvGetSize
变成NULL
. 我在里面检查了它们CvGetSize
,它真的变成了NULL
。没有取消引用,只是强制转换。
这怎么可能?(语言:C,编译器 MSVC 2012)
我的代码:
#include <opencv2/core/core_c.h>
#include <opencv2/highgui/highgui_c.h>
void Test(IplImage * img)
{
CvArr * arr = (CvArr*)(img);
printf("img in test = %p\n", (CvArr*)img);
cvGetSize(arr);
}
int main(int argc, char *argv[])
{
IplImage * img;
img = cvLoadImage("D:\\fusion.jpeg",CV_LOAD_IMAGE_COLOR);
Test(img);
return 0;
}
签名cvGetSize
:
CV_IMPL CvSize cvGetSize( const CvArr* arr )
我还将指针的输出添加到cvGetSize
.
输出:
img in test = 000000B2F5536F80
img in cvGetSize = 000007F9058A8670
更新:如果我将此示例设为 CPP 文件,则一切正常。