CV

制作灰度条

2017-07-15  本文已影响3人  谢小帅

原理

灰度线,R, G, B 三分量相等

256*100 的灰度条

Mat src = Mat(100, 256, CV_8UC3); // 256*100 8位3通道 定义空间

// 灰度赋值
for (int i = 0; i < src.cols; ++i) { // 256列
    uchar ch = (uchar) i; // Vec3b的数据类型是uchar
    for (int j = 0; j < src.rows; ++j) { // 100行
        src.at<Vec3b>(j, i) = {ch, ch, ch}; // 第i列,第j行
    }
}

注意赋值的时候是 (j, i)

灰度条

源代码

通过输出 Mat 矩阵 测试

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

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;
    }
}

int main() {

    Mat src = Mat(100, 256, CV_8UC3); // 256*100 的 8位3通道

    // 灰度赋值
    for (int i = 0; i < src.cols; ++i) { // 256列
        uchar ch = (uchar) i; // Vec3b的数据类型是uchar
        for (int j = 0; j < src.rows; ++j) { // 100行
            src.at<Vec3b>(j, i) = {ch, ch, ch}; // 第i列,第j行
        }
    }

    scanImageMatrix(src);

    namedWindow("Gray");
    imshow("Gray", src);

    waitKey(0);
    return 0;
}
上一篇 下一篇

猜你喜欢

热点阅读