用C++写一个灰度算法
时间: 2023-12-27 17:52:35 浏览: 36
以下是一个简单的灰度算法的C++代码实现:
```c++
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main(int argc, char** argv)
{
// 读取原始图像
Mat img = imread("test.jpg", IMREAD_GRAYSCALE);
if (img.empty())
{
cout << "无法读取图像文件" << endl;
return -1;
}
// 显示原始图像
imshow("Original Image", img);
// 灰度化处理
Mat grayImg = Mat::zeros(img.size(), img.type());
for (int i = 0; i < img.rows; i++)
{
for (int j = 0; j < img.cols; j++)
{
grayImg.at<uchar>(i, j) = 0.299 * img.at<Vec3b>(i, j)[2] + 0.587 * img.at<Vec3b>(i, j)[1] + 0.114 * img.at<Vec3b>(i, j)[0];
}
}
// 显示灰度化图像
imshow("Gray Image", grayImg);
waitKey(0);
return 0;
}
```
以上代码中,我们首先读取了一张图像,并显示了原始图像。接下来,我们通过对每个像素进行加权求和的方式计算出其灰度值,并将其赋值给一个新的图像矩阵中的对应像素位置。最后,我们显示了灰度化后的图像。
需要注意的是,上述代码中的灰度值计算公式并非唯一的,不同的算法可能会有不同的灰度值计算方法。