原理
灰度线,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;
}