In [21]:
import numpy as np
import sklearn as sk
import cv2
import scipy.misc
import os

In [25]:
qunat_value = 10
count = 0
tupple = []
run_length_encoding = []
old_value = None
img = cv2.imread("this.png")

img = np.floor_divide(img, 10)
for x in range(img.shape[0]):
    for y in range(img.shape[1]):
        for z in range(img.shape[2]):
            if not old_value:
                old_value = img[x][y][z]
            if img[x][y][z] == old_value:
                count+=1
            else:
                tupple.append((old_value, count))
                count = 1
                old_value = img[x][y][z]

sum_x = 0            
for x in range(len(tupple)):
    if tupple[x-1]:
        if tupple[x][0] == tupple[x-1][0]:
            sum_x += tupple[x][1]
        else:
            run_length_encoding.append((tupple[x-1][0], sum_x))
            sum_x = tupple[x][1]
    else:
        sum_x = tupple[x][1]
        
print(run_length_encoding)
scipy.misc.imsave('outfile.png', img)
print("compression ratio")
statinfo = os.stat('this.png')
original = statinfo.st_size
statinfo_new = os.stat('outfile.png')
new_file = statinfo_new.st_size
print(((original-new_file)/new_file)*100)


compression ratio
1239.1540812657317

In [ ]: