PyArray_SimpleNewFromData访问冲突

问题描述

我正在编写一个C ++ python扩展程序以与GigE相机通信,并从传感器向python返回一个像素值的numpy数组。下面显示了负责返回数组的代码部分。使用Python调用函数,一切按预期运行,直到lNumpyArray = PyArray_SimpleNewFromData(...)行,代码意外退出,并且出现错误提示 Could not convert to integer: 3221225477. Path 'exitCode'. Value was either too large or too small for an Int32.

尝试一些代码变体后,我总是会遇到相同的错误,并且使用该数字我认为这是某种访问冲突。这是我第一次尝试在C ++中使用PyArrays。有没有办法确切说明是什么原因造成的?

//printf("Before Getimage\n");
        PvImage* lImage = lBuffer->Getimage();
        printf("After Getimage\n");
        uint64_t lWidth = 0,lHeight = 0;
        lWidth = lImage->GetWidth();
        lHeight = lImage->GetHeight();

        // Next Part is to do with getting image into numpy array
        PyObject* lNumpyArray = NULL;
        npy_intp lDimensions[2];
        //printf("Before lBPP\n");
        uint64_t lBPP = lImage->GetBitsPerPixel();
        printf("After lBPP\n");

        if (lBPP % 8 == 0)
        {
            printf("After remainder check\n");
            lDimensions[0] = lImage->GetHeight();
            lDimensions[1] = lImage->GetWidth();
            //lDimensions[2] = lBPP / 8;
            printf("lBPP = %d\n",lBPP);
            // Build a numpy array describing the PvBuffer
            if (lBPP == 16) // for grayscale just pass w*h
            {
                
                printf("Start 16 bit array method\n");
                lNumpyArray = PyArray_SimpleNewFromData(2,lDimensions,NPY_UINT16,(void*)lImage->GetDataPointer());
                printf("After Array Creation");
                aPipeline->ReleaseBuffer(lBuffer);
                printf("Array Returned 1");
                return lNumpyArray;
            }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)