42 lines
1.2 KiB
C++
42 lines
1.2 KiB
C++
#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;
|
|
}
|