Abhinav Deshpande
Configure LFS
a176aa6 unverified
Raw
History Blame Contribute Delete
3.18 kB
# -*- coding: utf-8 -*-
"""
Created on Tue Dec 10 20:23:56 2024
@author: jishu
"""
import cv2
import numpy as np
from Backend.Fruit_Freshness.Banana import mask as mp
from Backend.Fruit_Freshness.Banana import hue as hu
def run(image, score):
# Case 1: Fresh Banana
case_1 = """
Fresh Banana
Shelf-Life: 2-7 days (at room temperature)
Characteristics: Firm texture, bright yellow color with a few small spots, sweet aroma, and no bruises or browning.
Eatable or not: Definitely eatable.
"""
# Case 2: Moderately Stale Banana
case_2 = """
Moderately Stale Banana
Shelf-Life: 7-10 days (room temperature)
Characteristics: Softer texture, increased browning or spotting on the peel, slightly mushy inside, and a more pronounced sweet flavor.
Eatable or not: Eatable but may not be as enjoyable; best used in smoothies or baking.
"""
# Case 3: Rotten Banana
case_3 = """
Rotten Banana
Shelf-Life: Exceeds 10 days (room temperature)
Characteristics: Very soft or mushy texture, dark brown or blackened peel, very strong, fermented smell, and signs of decay.
Eatable or not: Not eatable.
"""
original, image = mp.remove_background_grabcut(image)
# Assume you already have a mask for the fruit (from previous steps)
hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
lower_bound_1 = np.array([0, 0, 30]) # Example: Orange-ish fruit
upper_bound_1 = np.array([180, 255, 100])
binary_mask_1 = cv2.inRange(hsv_image, lower_bound_1, upper_bound_1)
# Apply morphological operations to refine the mask
kernel = np.ones((5, 5), np.uint8)
refined_mask_1 = cv2.morphologyEx(binary_mask_1, cv2.MORPH_CLOSE, kernel)
refined_mask_1 = cv2.morphologyEx(refined_mask_1, cv2.MORPH_OPEN, kernel)
# Detect low pixel values in the fruit area using the mask
low_pixel_mask_1 = hu.detect_low_pixel_values(image, refined_mask_1)
# print("Dark Pixels:", low_pixel_mask_1)
hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
lower_bound_2 = np.array([10, 50, 100]) # Example: Orange-ish fruit
upper_bound_2 = np.array([20, 200, 255])
binary_mask_2 = cv2.inRange(hsv_image, lower_bound_2, upper_bound_2)
# Apply morphological operations to refine the mask
kernel = np.ones((5, 5), np.uint8)
refined_mask_2 = cv2.morphologyEx(binary_mask_2, cv2.MORPH_CLOSE, kernel)
refined_mask_2 = cv2.morphologyEx(refined_mask_2, cv2.MORPH_OPEN, kernel)
# Detect low pixel values in the fruit area using the mask
low_pixel_mask_2 = hu.detect_low_pixel_values(image, refined_mask_2)
# print("Brown Pixels:", low_pixel_mask_2)
if low_pixel_mask_1 > 13:
score = 0
elif low_pixel_mask_2 > 20:
score = 5
else:
score = 10
answer = ""
if score <=3 and score >= 0:
answer = case_3
elif score >= 4 and score <= 7:
answer = case_2
else:
answer = case_1
return answer