huago-corrcet_tools/HuaGoCorrect/imageprocess.cpp

42 lines
1.2 KiB
C++
Raw Normal View History

2020-08-31 08:08:50 +00:00
#include "stdafx.h"
#include "imageprocess.h"
vector<uchar> histogram_bit8(uchar* data, int rows, int cols)
{
vector<int> hist_sum(static_cast<uint>(cols));
vector<uchar> hist(static_cast<uint>(cols));
for (int x = 0; x < cols; ++x)
{
for (int y = 0; y < rows; ++y)
{
hist_sum[static_cast<uint>(x)] += data[static_cast<uint>(y * cols + x)];
}
hist[static_cast<uint>(x)] = static_cast<uchar>(hist_sum[static_cast<uint>(x)] / rows);
}
return hist;
}
void histogram_bit32(uchar* data, int rows, int cols, vector<uchar>& r, vector<uchar>& g, vector<uchar>& b)
{
uint total = static_cast<uint>(rows * cols);
uchar* buffer_r = new uchar[total];
uchar* buffer_g = new uchar[total];
uchar* buffer_b = new uchar[total];
for (uint i = 0; i < total; ++i)
{
buffer_r[i] = data[i * 3 + 0];
buffer_g[i] = data[i * 3 + 1];
buffer_b[i] = data[i * 3 + 2];
}
r = histogram_bit8(buffer_r, rows, cols);
g = histogram_bit8(buffer_g, rows, cols);
b = histogram_bit8(buffer_b, rows, cols);
delete[] buffer_r;
delete[] buffer_g;
delete[] buffer_b;
}