-3

OpenCVの関数の1 つに非常に奇妙な (むしろ不可能な) 問題がありcvGetSizeます。中をチェックしてもらったら、本当にこうなってしまいました。逆参照はなく、キャストするだけです。cvGetSizeNULLCvGetSizeNULL

これはどのように可能ですか?(言語: 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 ファイルにすると、すべて正常に動作します。

4

1 に答える 1