File size: 1,618 Bytes
a176aa6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import cv2
import numpy as np

def detect_low_pixel_values(image, mask, threshold=50):
    # Step 1: Apply the mask to the original image (this keeps the fruit area, sets background to black)
    masked_image = cv2.bitwise_and(image, image, mask=mask)
    
    # Step 2: Convert the image to grayscale for easier pixel value comparison
    gray_masked_image = cv2.cvtColor(masked_image, cv2.COLOR_BGR2GRAY)

    # Step 3: Detect low pixel values below the threshold
    low_pixel_mask = gray_masked_image < threshold  # Pixels below threshold will be True
    high_pixel_mask = gray_masked_image > threshold
    
    # Step 4: Convert the result back to an image for visualization
    low_pixel_image = np.zeros_like(image)  # Create an empty image to highlight low pixel values
    low_pixel_image[low_pixel_mask] = [255, 255, 255]  # Set low-value pixels to red (for visualization)
    
    
    dark_pixel_count = np.count_nonzero(low_pixel_mask)/10000  # Number of dark pixels (low pixel values)
    # print(f"Number of dark pixels: {dark_pixel_count}")
    high_pixel_count = np.count_nonzero(high_pixel_mask)/1000
    # print(f"Number of high pixels: {high_pixel_count}")
    # Step 5: Display the results
    # cv2.imshow("Original Image with Low Pixel Values", low_pixel_image)  # Show the highlighted low pixel values
    # cv2.imshow("Masked Image", masked_image)  # Show the masked image
    # cv2.waitKey(0)  # Wait for a key press to close the images
    # cv2.destroyAllWindows()  # Close all OpenCV windows

    return high_pixel_count  # Return the mask of low pixel values