Распечатайте значения матрицы (Mat) в OpenCV С++ - программирование
Подтвердить что ты не робот

Распечатайте значения матрицы (Mat) в OpenCV С++

Я хочу сбросить значения матрицы в OpenCV на консоль с помощью cout. Я быстро понял, что я не понимаю систему типа OpenvCV и шаблоны С++ достаточно хорошо, чтобы выполнить эту простую задачу.

Читатель, пожалуйста, напишите (или укажите мне) небольшую функцию или фрагмент кода, который печатает Mat?

С уважением, Аарон

PS: Кодекс, который использует новый интерфейс С++ Mat, в отличие от старого интерфейса CvMat, является предпочтительным.

4b9b3361

Ответ 2

#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>

#include <iostream>
#include <iomanip>

using namespace cv;
using namespace std;

int main(int argc, char** argv)
{
    double data[4] = {-0.0000000077898273846583732, -0.03749374753019832, -0.0374787251930463, -0.000000000077893623846343843};
    Mat src = Mat(1, 4, CV_64F, &data);
    for(int i=0; i<4; i++)
        cout << setprecision(3) << src.at<double>(0,i) << endl;

    return 0;
}

Ответ 3

Я думаю, что использование matrix.at<type>(x,y) - не лучший способ повторить через объект Mat! Если я правильно помню, matrix.at<type>(x,y) будет перебирать с начала матрицы каждый раз, когда вы его вызываете (я мог бы ошибаться, хотя). Я бы предложил использовать cv::MatIterator_

cv::Mat someMat(1, 4, CV_64F, &someData);;
cv::MatIterator_<double> _it = someMat.begin<double>();
for(;_it!=someMat.end<double>(); _it++){
    std::cout << *_it << std::endl;
}