#include "stdafx.h" #include "imageprocess.h" vector histogram_bit8(uchar* data, int rows, int cols) { vector hist_sum(static_cast(cols)); vector hist(static_cast(cols)); for (int x = 0; x < cols; ++x) { for (int y = 0; y < rows; ++y) { hist_sum[static_cast(x)] += data[static_cast(y * cols + x)]; } hist[static_cast(x)] = static_cast(hist_sum[static_cast(x)] / rows); } return hist; } void histogram_bit32(uchar* data, int rows, int cols, vector& r, vector& g, vector& b) { uint total = static_cast(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; }