OpenCVの関数の1 つに非常に奇妙な (むしろ不可能な) 問題があり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 ファイルにすると、すべて正常に動作します。