There is no better implementation than just to count raster points of colors.
Paste your graphics into a variable

Get image raster data and delete possible alpha channel.
gr1 = Map[(Take[#, 3] &), ImageData[ gr ], {2}];
Define a select function for RGB below a white treshhold (or distances to any other uniform background colors) for a whole row of the raster
sel = (Select[#, ( Mean[Flatten[#]] < 0.98 &)] &);
and select colored rows and columns.
gr2 = sel[ sel[gr1]\[Transpose]]\[Transpose];
Optical check of cropped result
Image[Raster[gr2]]

total = Times @@ Dimensions[gr2][[1 ;; 2]];
Map count function into logic of the three predominant colors
(PercentForm[
N[Count[ gr2, {R_Real, G_, B_} /; #, {2}] / tot]] &) /@
{R > G && R > B, (G > R && G > B), (B > R && B > G)}
{25.95%, 50.3%, 23.05%}