Vrushali's picture
Add new modules and update file paths
d1f611f
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)