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)
In [ ]: