2
對於一個項目,我需要在Python中連接一些C++模塊。爲此,我需要一個將Python元組轉換爲cv :: Size(openCV對象)的轉換器。這裏是我的C++函數:調用一些PyObject函數導致段錯誤 - Boost python
cv::Size tupleToSize(PyObject* obj)
{
// Check if obj is a tuple :
if (!PyTuple_CheckExact(obj))
return cv::Size(-1,-1);
// Element Extraction :
PyObject* x = PyTuple_GetItem(obj,0);
PyObject* y = PyTuple_GetItem(obj,1);
// TODO : extract values from x and y
// Trying to create two variables a et b that contains the values
long a = PyLong_AsLong(x);
long b = PyLong_AsLong(y);
/* The first line causes a SegFault*/
// New cv::Size with extracted values :
cv::Size ret(a,b);
return ret;
}
這裏是調用我的函數主要:
int main()
{
// New cv:Size :
Size s(10,20);
// Conversion :
PyObject* ss = SizeToTuple(s); // I have a SizeToTuple function that works fine.
// Reconversion :
Size sss = tupleToSize(ss); /* SEGFAULT */
return 0;
}
所以,我不知道如果我的PyObject x和y不類型的龍,所以我決定檢查它們的類型,但是當我調用一些函數時:
PyObject_repr(x);
PyObject_str(x);
它們也會導致段錯誤。
所以,我很卡住。你有什麼建議嗎 ?提前致謝。在我的代碼
Py_Initialize();
:
在進行大部分調用之前,應該初始化Python解釋器。看[這個](http://stackoverflow.com/a/19816546/1053968)的答案。 –