微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PyArray_SimpleNewFromData访问冲突

如何解决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 举报,一经查实,本站将立刻删除。