Spaces:
Sleeping
Sleeping
import cv2 | |
import os | |
from config import file_Directory | |
import numpy as np | |
from PIL import Image | |
class Image_Enhance(): | |
def __init__(self, image_path) -> None: | |
self.image_path = image_path | |
def brightness_Adjust(self): | |
# Load the image | |
image = cv2.imread(self.image_path) | |
#Plot the original image | |
alpha = -1.1 | |
# control brightness by 50 | |
beta = 70 | |
image2 = cv2.convertScaleAbs(image, alpha=alpha, beta=beta) | |
#Save the image | |
# imagepth = os.path.join(os.path.dirname(self.image_path), 'Brightness & contrast.jpg') | |
imagepth = os.path.join(file_Directory, 'Brightness & contrast.jpg') | |
cv2.imwrite(imagepth, image2) | |
return imagepth | |
def remove_flash(self, imagepth): | |
image = cv2.imread(imagepth) | |
# cv2.cvtColor is applied over the | |
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) | |
# Apply adaptive thresholding to segment the text | |
thresh = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY_INV, 11, 4) | |
# Apply Gaussian blur to the grayscale image to reduce noise | |
blurred = cv2.GaussianBlur(gray, (5, 5), 0) | |
# Threshold the blurred image to create a binary mask for the flashlight glare | |
_, mask = cv2.threshold(blurred, 240, 255, cv2.THRESH_BINARY_INV) | |
# Combine the text and glare masks | |
mask = cv2.bitwise_or(mask, thresh) | |
# Apply morphological closing to further remove small areas of glare | |
kernel = np.ones((5,5),np.uint8) | |
mask = cv2.morphologyEx(mask, cv2.MORPH_CLOSE, kernel) | |
# Apply the mask to the original image to remove flashlight glare | |
result = cv2.bitwise_and(image, image, mask=mask) | |
cv2.imwrite(os.path.join(file_Directory, 'remove_flash.jpg'), result) | |
def sharpen(self, imagepth): | |
image = cv2.imread(imagepth) | |
# Create the sharpening kernel | |
kernel = np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]]) | |
# Sharpen the image | |
sharpened_image = cv2.filter2D(image, -1, kernel) | |
#Save the image | |
imagepath = os.path.join(file_Directory, 'sharpened_image.jpg') | |
cv2.imwrite(imagepath, sharpened_image) | |
return imagepath | |
def lapacian_sharpen(self, imagepth): | |
#Load the image | |
image = cv2.imread(imagepth) | |
# Sharpen the image using the Laplacian operator | |
sharpened_image2 = cv2.Laplacian(image, cv2.CV_64F) | |
imagepath = os.path.join(file_Directory, 'Laplacian_sharpened_image.jpg') | |
#Save the image | |
cv2.imwrite(imagepath, sharpened_image2) | |
def removing_noise(self, imagepth): | |
# Load the image | |
image = cv2.imread(imagepth) | |
# Remove noise using a median filter | |
filtered_image = cv2.medianBlur(image, 1) | |
imagepath = os.path.join(file_Directory, 'Median Blur.jpg') | |
#Save the image | |
cv2.imwrite(imagepath, filtered_image) | |
return imagepath | |
def enhance_color(self, imagepth): | |
# Load the image | |
image = cv2.imread(imagepth) | |
image = cv2.cvtColor(image, cv2.COLOR_RGB2HSV) | |
# Adjust the hue, saturation, and value of the image | |
# Adjusts the hue by multiplying it by 0.7 | |
image[:, :, 0] = image[:, :, 0] * 0.7 | |
# Adjusts the saturation by multiplying it by 1.5 | |
image[:, :, 1] = image[:, :, 1] * 1.5 | |
# Adjusts the value by multiplying it by 0.5 | |
image[:, :, 2] = image[:, :, 2] * 0.5 | |
image2 = cv2.cvtColor(image, cv2.COLOR_HSV2BGR) | |
imagepath = os.path.join(file_Directory, 'enhanced coloured.jpg') | |
#Save the image | |
cv2.imwrite(imagepath, image2) | |
obj = Image_Enhance(r"data/Catalog Digitization/ONDC Test Data _ Images/Product Images/Bru_Instant_Coffee_Powder.png") | |
pth = obj.brightness_Adjust() | |
sharpen = obj.sharpen(pth) | |
lapacian_sharpen = obj.lapacian_sharpen(sharpen) | |
noise = obj.removing_noise(sharpen) | |
obj.enhance_color(noise) | |
obj.remove_flash(sharpen) |