color compression using k-means algorithm
As already pointed out in a comment, the 16 million is the number of colors in the RGB space, $256^3=16\ 777\ 216$.  (The image itself only contains $96\ 615$ unique colors.)

As for the reduction, the author is generating 16 clusters; while the center points are still given in RGB format, there are only 16 of them.  (If you're following along in Colab or your own clone, run np.unique(new_colors, axis=0); that gives the 16 unique colors remaining in the compression.)  Now, to actually save the color-compressed image with smaller disk usage, you'd probably need to convert those 16 RGB codes with simple label encoding, and be able to reference their colors upon loading.  Anyway, as the author points out this isn't really meant to be an effective way to reduce image size, just an interesting example of clustering.