2014-02-01 2 views
1

Я использую C++. Я хочу напечатать матрицу объекта Mat на разных линиях, как это:Печать Матовая матрица на разных линиях

http://i.imgur.com/1FsNmah.png

То, что я прямо сейчас

cout << m <<endl <<endl; 

Может кто-нибудь помочь с этим, пожалуйста?

+0

Извините, я не знаю, почему последняя строка не появляется. Это cout << matrix_f << endl << endl; – Steph

+0

Я исправил форматирование, но можете ли вы объяснить, что m или matrix_f (объявление)? – wimh

+0

жаль, что я забыл упомянуть. «matrix_f» - это имя объекта Mat (Mat matrix_f;) – Steph

ответ

2

Если вы хотите распечатать его в командную строку, я предлагаю смотреть на OpenCV: Matrix Iteration

Если вы делаете это довольно часто, хотя и не очень рекомендуется, вы можете получить свой собственный класс Matrix и переопределить оператор << (как в ссылке выше)

3

В этом случае (со ссылкой на комментарии) вам нужно напечатать ваши матрицы по-разному. Используйте m.row() и m.at(). Предположим, что у вас есть матрицы 3x3, как на картинке:

for (int i = 0; i < 3; ++i) 
{ 
    Mat row1 = m1.row (i); 
    Mat row2 = m2.row (i); 
    Mat row3 = m3.row (i); 

    // this can be replaced by a loop, I spell it out for the sake of clearness 
    cout << row1.at(0, 0) << " " << row1.at (0, 1) << " " << row1.at (0, 2) << "\t" 
     << row2.at(0, 0) << " " << row2.at (0, 1) << " " << row2.at (0, 2) << "\t" 
     << row3.at(0, 0) << " " << row3.at (0, 1) << " " << row3.at (0, 2) << endl; 

} 
Смежные вопросы