1-dimensional k-means clustering opencv c++

I have a 56x1 vector of doubles avg_intensities_double (range: 0-255) and I want to do k-means clustering to group the values. I use the kmean function from opencv . Here is my code:

Mat labels, new_centers;

vector<double> avg_intensities_double(avg_intensities.begin(), avg_intensities.end());

Mat points(avg_intensities_double.size(), 1, CV_32F);

memcpy(points.data, avg_intensities_double.data(), avg_intensities_double.size()*sizeof(uchar));

auto compactness = kmeans(points, 10, labels, TermCriteria(TermCriteria::EPS+TermCriteria::COUNT, 10, 1.0), 10, KMEANS_RANDOM_CENTERS, new_centers);

cout << "labels: " << labels.rows << " x " << labels.cols << '\n' << endl;

for (int i=0; i<labels.rows; i++){
    cout << labels.at<int>(i,0) << endl;

cout << "new_centers: " << new_centers.rows << " x " << new_centers.cols << '\n' << endl;

for (int i=0; i<new_centers.rows; i++){
    cout << new_centers.at<double>(i,0) << endl;

I create the input matrix points and then I copy the values from the vector into the matrix. The result is a 56x1 matrix labels (with the labels of the cluster that each value belongs to) and a 10x1 matrix new_centers (with the final center values of the clusters).

When I print the resulted new_centers matrix I get these values:

new_centers: 10 x 1


These are not correct. I expect values in the range 0-255 and not too close to each other, since they are centers of the clusters.

What am I doing wrong here? Is this the right way to do 1-dimensional clustering with k-means? Any feedback is appreciated.

I use Ubuntu 18.04 dual boot, c++11, opencv 3.2.0 and my code runs as a ROS melodic node.