CV

图像容器 & 遍历 Mat 矩阵

2017-07-12  本文已影响21人  谢小帅

1. Mat 数据存放格式

Mat 和 Matlab 里的数组格式有点像,但一般是二维向量。

单通道灰度图数据存放格式:

单通道灰度图数据存放格式

多通道的图像中,每列 并列存放通道数量的子列,如RGB三通道彩色图:

RGB三通道彩色图数据存放格式

注意通道的顺序反转了:BGR。

2. Mat::at 获取图像某点的值

src.at<Vec3b>(i, j)   // RGB值
(int) src.at<uchar>(i, j) // 灰度值
// 扫描 RGB 图像矩阵
void scanImageMatrix(Mat &src) {
    for (int i = 0; i < src.rows; ++i) {
        for (int j = 0; j < src.cols; ++j) {
            cout << src.at<Vec3b>(i, j) << ", ";
        }
        cout << endl;
    }
}

// 扫描灰度图像矩阵
void scanImageMatrixG(Mat &src) {
    for (int i = 0; i < src.rows; ++i) {
        for (int j = 0; j < src.cols; ++j) {
            cout << setw(3) << (int) src.at<uchar>(i, j) << ", ";
        }
        cout << endl;
    }
}

选择了 1-5行 5-9列的数据
RGB 图像输出

[103, 105, 129], [102, 104, 128], [102, 104, 128], [100, 102, 126], [99, 103, 127], 
[103, 105, 129], [102, 104, 128], [102, 104, 128], [100, 102, 126], [101, 103, 127], 
[103, 105, 129], [102, 104, 128], [102, 104, 128], [100, 102, 126], [101, 103, 127], 
[105, 105, 129], [104, 104, 128], [102, 104, 128], [100, 102, 126], [100, 102, 126], 
[105, 105, 129], [104, 104, 128], [104, 104, 128], [102, 102, 126], [100, 102, 126],
……

灰度图像输出

112, 111, 111, 109, 110, 
112, 111, 111, 109, 110, 
112, 111, 111, 109, 110, 
112, 111, 111, 109, 109, 
112, 111, 111, 109, 109, 
……

像素点的 灰度值 = ( R + G + B ) / 3

3. 源代码

#include <cv.h>
#include <highgui.h>
#include <iomanip>

using namespace cv;
using namespace std;

// 扫描图像矩阵
void scanImageMatrix(Mat &src) {
    for (int i = 0; i < src.rows; ++i) {
        for (int j = 0; j < src.cols; ++j) {
            cout << src.at<Vec3b>(i, j) << ", ";
        }
        cout << endl;
    }
}

// 扫描灰度图像矩阵
void scanImageMatrixG(Mat &src) {
    for (int i = 0; i < src.rows; ++i) {
        for (int j = 0; j < src.cols; ++j) {
            cout << setw(3) << (int) src.at<uchar>(i, j) << ", ";
        }
        cout << endl;
    }
}


int main() {
    Mat src = imread("../pictures/bear.jpeg", 0);
    scanImageMatrixG(src);
    return 0;
}
上一篇 下一篇

猜你喜欢

热点阅读