灰度化算法
将彩色图像转换为灰度图像,常用的加权平均法公式为: Gray = 0.299 * R + 0.587 * G + 0.114 * B 。
cpp
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
void grayscaleImage(Mat& image) {
int rows = image.rows;
int cols = image.cols;
for (int i = 0; i < rows; ++i) {
for (int j = 0; j < cols; ++j) {
Vec3b& pixel = image.at<Vec3b>(i, j);
int grayValue = 0.299 * pixel[2] + 0.587 * pixel[1] + 0.114 * pixel[0];
pixel[0] = pixel[1] = pixel[2] = grayValue;
}
}
}
调用这个函数:
cpp
int main() {
Mat image = imread("test.jpg");
if (image.empty()) {
cout << "无法读取图像" << endl;
return -1;
}
grayscaleImage(image);
imwrite("grayscale.jpg", image);
return 0;
}