2016-06-06 2 views
-4

У меня есть три C++-матрицы, называемые myMatrix, myMatrix2 и canvas соответственно с использованием OpenCV. Я довольно новичок в C++, поэтому мне непонятно, что делает Range :: all(). Я понимаю второй оператор Range, и мне интересно, является ли Range::all() эквивалентом Range(0,myMatrix.rows)?Mat in C++ to Numpy

myMatrix.copyTo(canvas(Range::all(), Range(0, myMatrix2.cols))); 

Я думаю, это должно быть что-то вроде:

canvas = np.copy(myMatrix[:][:myMatrix2.cols]) 
+2

Как у вас есть * две матрицы в C++ *, но я вижу только синтаксис python? : S Что вы точно пытаетесь сделать? и на каком языке, python или C++? Вы имеете в виду просто перевод эквивалентного синтаксиса C++ на python? –

+0

@ImanolLuengo Я пытаюсь преобразовать синтаксис C++ в Python. И извинения, есть 3 матрицы в обоих. – Apollo

+0

Ops Я просто редактировал вопрос, я постараюсь ответить на него. –

ответ

3

Если я понимаю правильно, NumPy эквивалент можно записать в виде:

canvas = np.copy(myMatrix[:, :myMatrix2.shape[1]]) 

Предполагая, что оба myMatrix и myMatrix2 есть. Если canvas также существует в питона заранее, вы можете обновить его InPlace (а не создавать новую копию), как:

canvas[:] = myMatrix[:, :myMatrix2.shape[1]] 

: является эквивалентом Range::all() в то время как :myMatrix2.shape[1] эквивалентно Range(0, myMatrix2.cols).

Вы должны сначала научиться использовать numpy (у него есть great manual), а не пытаться заставить что-то работать вслепую.

+0

спасибо, я прочитаю документацию. Был в спешке, чтобы закончить. Спасибо. – Apollo