统计rgb值像素个数C++并绘制折线图
时间: 2023-07-13 15:29:01 浏览: 209
好的,我可以帮你解决这个问题。首先,我们需要一个图片,我们可以使用OpenCV库来读取图片并统计像素个数。然后,我们可以使用另一个库(例如matplotlibcpp)来绘制折线图。
以下是代码示例:
```c++
#include <iostream>
#include <opencv2/opencv.hpp>
#include "matplotlibcpp.h"
namespace plt = matplotlibcpp;
int main() {
// 读取图片
cv::Mat image = cv::imread("test.jpg", cv::IMREAD_COLOR);
// 统计像素个数
int r_count[256] = {0};
int g_count[256] = {0};
int b_count[256] = {0};
for (int i = 0; i < image.rows; i++) {
for (int j = 0; j < image.cols; j++) {
cv::Vec3b pixel = image.at<cv::Vec3b>(i, j);
int r = pixel[2];
int g = pixel[1];
int b = pixel[0];
r_count[r]++;
g_count[g]++;
b_count[b]++;
}
}
// 绘制折线图
plt::plot(r_count, "r");
plt::plot(g_count, "g");
plt::plot(b_count, "b");
plt::show();
return 0;
}
```
在这个示例中,我们使用了OpenCV读取了一张名为“test.jpg”的图片,并统计了该图片中每个RGB值的像素个数。然后,我们使用matplotlibcpp库绘制了一个包含三条线的折线图,每条线表示一个颜色通道的像素个数。最后,我们使用show()函数将图像显示出来。
请注意,为了使上述代码正常工作,您需要安装OpenCV和matplotlibcpp库。
阅读全文