问题描述
我正在编写一个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 (将#修改为@)