Abhinav Deshpande
Configure LFS
a176aa6 unverified
Raw
History Blame Contribute Delete
2.32 kB
# -*- coding: utf-8 -*-
"""
Created on Tue Dec 10 12:38:54 2024
@author: jishu
"""
import cv2
import numpy as np
import matplotlib.pyplot as plt
def find_orange_yellow_frequency(image):
if image is None:
print("Error: Image not found!")
return None
# Step 2: Convert the image to HSV color space
hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
# Step 3: Extract the Hue channel
hue_channel = hsv_image[:, :, 0]
# Step 4: Calculate the histogram for the Hue channel
hist = cv2.calcHist([hue_channel], [0], None, [180], [0, 180])
# Step 5: Calculate the frequency for orange and yellow hues, excluding red
orange_range = range(10, 30) # Hue values for orange
yellow_range = range(30, 60) # Hue values for yellow
# Sum the frequencies for the orange range
orange_frequency = sum(hist[hue] for hue in orange_range)
yellow_frequency = sum(hist[hue] for hue in yellow_range)
# Combine frequencies for orange and yellow
total_orange_yellow_frequency = orange_frequency + yellow_frequency
# Normalize the histogram for percentage calculation
total_pixels = hue_channel.size
orange_percentage = (orange_frequency / total_pixels) * 100
yellow_percentage = (yellow_frequency / total_pixels) * 100
combined_percentage = (total_orange_yellow_frequency / total_pixels) * 100
return (orange_percentage, yellow_percentage)
# print(f"Orange Percentage: {orange_percentage[0]:.2f}%")
# print(f"Yellow Percentage: {yellow_percentage[0]:.2f}%")
# print(f"Combined Percentage of Orange and Yellow: {combined_percentage[0]:.2f}%")
# Step 6: Visualize the histogram using matplotlib
# plt.figure(figsize=(10, 5))
# plt.title("Hue Histogram (Ignoring Red)")
# plt.xlabel("Hue Value")
# plt.ylabel("Frequency")
# plt.plot(hist, color='orange', label='Hue Histogram')
# plt.axvspan(10, 30, color='orange', alpha=0.3, label='Orange Range')
# plt.axvspan(30, 60, color='yellow', alpha=0.3, label='Yellow Range')
# plt.legend()
# plt.show()
# # Step 7: Display the image using OpenCV
# cv2.imshow("Original Image", image)
# cv2.waitKey(0)
# cv2.destroyAllWindows()