Spaces:
Runtime error
Runtime error
import os | |
import cv2 | |
import numpy as np | |
from PIL import Image | |
# Some image process techniques to improve the images. | |
class ImageProcessor(): | |
def __init__(self): | |
pass | |
def PIL_to_cv2(self, pil_img): | |
return cv2.cvtColor(np.array(pil_img), cv2.COLOR_RGB2BGR) | |
def cv2_to_PIL(self, cv_img): | |
return Image.fromarray(cv2.cvtColor(cv_img, cv2.COLOR_BGR2RGB)) | |
def image_padding(self, image, padd): | |
''' | |
Image boarder padding to avoid table image loss | |
''' | |
width, height = image.size | |
new_width = width +(2*padd) | |
new_height = height + (2*padd) | |
color = (255, 255, 255) | |
result = Image.new(image.mode, (new_width, new_height), color) | |
result.paste(image, (padd, padd)) | |
return result | |
def sharpen_image(self, pil_img): | |
img = self.PIL_to_cv2(pil_img) | |
''' | |
Image sharpening kernal | |
''' | |
sharpen_kernel = np.array([[-1, -1, -1], | |
[-1, 9, -1], | |
[-1, -1, -1]]) | |
sharpen = cv2.filter2D(img, -1, sharpen_kernel) | |
pil_img = self.cv2_to_PIL(sharpen) | |
return pil_img | |
def binarizeBlur_image(self, pil_img): | |
image = self.PIL_to_cv2(pil_img) | |
thresh = cv2.threshold(image, 0, 255, cv2.THRESH_BINARY_INV)[1] | |
result = cv2.GaussianBlur(thresh, (3,3), 0) | |
result = 255 - result | |
return self.cv2_to_PIL(result) | |
def whole_image_processing(self, pil_img): | |
sharpen_img = self.sharpen_image(pil_img) | |
binary_img = self.binarizeBlur_image(sharpen_img) | |
return binary_img | |