parent
1ebdfa4992
commit
f9fc180e1a
@ -1284,7 +1284,7 @@ void CvEM::getCovs(vector<Mat>& _covs) const
|
||||
int i, n = params.nclusters;
|
||||
_covs.resize(n);
|
||||
for( i = 0; i < n; i++ )
|
||||
_covs[i] = Mat(covs[i]);
|
||||
Mat(covs[i]).copyTo(_covs[i]);
|
||||
}
|
||||
|
||||
Mat CvEM::getWeights() const
|
||||
|
@ -2860,10 +2860,6 @@ static PyObject *fromarray(PyObject *o, int allowND)
|
||||
type = CV_16SC1;
|
||||
else if (pai->itemsize == 4)
|
||||
type = CV_32SC1;
|
||||
else if (pai->itemsize == 8) {
|
||||
PyErr_SetString(PyExc_TypeError, "OpenCV cannot handle 64-bit integer arrays");
|
||||
return NULL;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'u':
|
||||
@ -2879,9 +2875,12 @@ static PyObject *fromarray(PyObject *o, int allowND)
|
||||
else if (pai->itemsize == 8)
|
||||
type = CV_64FC1;
|
||||
break;
|
||||
|
||||
|
||||
}
|
||||
if (type == -1) {
|
||||
PyErr_SetString(PyExc_TypeError, "the array type is not supported by OpenCV");
|
||||
return NULL;
|
||||
}
|
||||
assert(type != -1);
|
||||
|
||||
if (!allowND) {
|
||||
cvmat_t *m = PyObject_NEW(cvmat_t, &cvmat_Type);
|
||||
|
@ -237,7 +237,7 @@ static PyObject* pyopencv_from(const Mat& m)
|
||||
Mat temp, *p = (Mat*)&m;
|
||||
if(!p->refcount || p->allocator != &g_numpyAllocator)
|
||||
{
|
||||
pyopencv_to(Py_None, temp);
|
||||
temp.allocator = &g_numpyAllocator;
|
||||
m.copyTo(temp);
|
||||
p = &temp;
|
||||
}
|
||||
@ -484,7 +484,7 @@ template<typename _Tp> struct pyopencvVecConverter
|
||||
static bool to(PyObject* obj, vector<_Tp>& value, const char* name="<unknown>")
|
||||
{
|
||||
typedef typename DataType<_Tp>::channel_type _Cp;
|
||||
if(!obj)
|
||||
if(!obj || obj == Py_None)
|
||||
return true;
|
||||
if (PyArray_Check(obj))
|
||||
{
|
||||
@ -596,6 +596,8 @@ static PyObject* pyopencv_from(const KeyPoint&);
|
||||
|
||||
template<typename _Tp> static inline bool pyopencv_to_generic_vec(PyObject* obj, vector<_Tp>& value, const char* name="<unknown>")
|
||||
{
|
||||
if(!obj || obj == Py_None)
|
||||
return true;
|
||||
if (!PySequence_Check(obj))
|
||||
return false;
|
||||
PyObject *seq = PySequence_Fast(obj, name);
|
||||
@ -619,13 +621,13 @@ template<typename _Tp> static inline bool pyopencv_to_generic_vec(PyObject* obj,
|
||||
template<typename _Tp> static inline PyObject* pyopencv_from_generic_vec(const vector<_Tp>& value)
|
||||
{
|
||||
int i, n = (int)value.size();
|
||||
PyObject* seq = PyTuple_New(n);
|
||||
PyObject* seq = PyList_New(n);
|
||||
for( i = 0; i < n; i++ )
|
||||
{
|
||||
PyObject* item = pyopencv_from(value[i]);
|
||||
if(!item)
|
||||
break;
|
||||
PyTuple_SET_ITEM(seq, i, item);
|
||||
PyList_SET_ITEM(seq, i, item);
|
||||
}
|
||||
if( i < n )
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user