Add files via upload
This commit is contained in:
parent
12f70acfe5
commit
828231941c
|
@ -0,0 +1,74 @@
|
|||
import cv2
|
||||
import numpy as np
|
||||
import os
|
||||
import matplotlib.pyplot as plt
|
||||
|
||||
# Define colors for different categories
|
||||
colors = {
|
||||
0: [0, 0, 0], # Black
|
||||
2: [255, 255, 255], # White
|
||||
3: [255, 0, 0] # Red
|
||||
}
|
||||
|
||||
# Function to process each image
|
||||
def process_image(image_path, output_folder):
|
||||
image = cv2.imread(image_path)
|
||||
|
||||
# BGR to RGB
|
||||
image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
|
||||
|
||||
# Define color ranges
|
||||
lower_black = np.array([0, 0, 0], dtype=np.uint8)
|
||||
upper_black = np.array([50, 50, 50], dtype=np.uint8)
|
||||
|
||||
lower_white = np.array([200, 200, 200], dtype=np.uint8)
|
||||
upper_white = np.array([255, 255, 255], dtype=np.uint8)
|
||||
|
||||
lower_red = np.array([100, 0, 0], dtype=np.uint8)
|
||||
upper_red = np.array([255, 50, 50], dtype=np.uint8)
|
||||
|
||||
# Create color masks
|
||||
mask_black = cv2.inRange(image_rgb, lower_black, upper_black)
|
||||
mask_white = cv2.inRange(image_rgb, lower_white, upper_white)
|
||||
mask_red = cv2.inRange(image_rgb, lower_red, upper_red)
|
||||
|
||||
# Create an output mask where black == 0, white == 2, red == 3
|
||||
output_mask = np.zeros(image_rgb.shape[:2], dtype=np.uint8)
|
||||
output_mask[mask_black != 0] = 0
|
||||
output_mask[mask_white != 0] = 2
|
||||
output_mask[mask_red != 0] = 3
|
||||
|
||||
# Define output filename
|
||||
filename = os.path.splitext(os.path.basename(image_path))[0]
|
||||
output_filename = f"{filename}_color_mask_test.png"
|
||||
output_path = os.path.join(output_folder, output_filename)
|
||||
|
||||
# Save image
|
||||
cv2.imwrite(output_path, output_mask)
|
||||
print(f"Processed: {image_path} -> {output_path}")
|
||||
|
||||
# Create RGB representation of the mask
|
||||
rgb_mask = np.zeros((output_mask.shape[0], output_mask.shape[1], 3), dtype=np.uint8)
|
||||
for label, color in colors.items():
|
||||
rgb_mask[output_mask == label] = color
|
||||
|
||||
# Display the RGB mask
|
||||
plt.figure(figsize=(6, 6))
|
||||
plt.title('RGB Color Mask')
|
||||
plt.imshow(rgb_mask)
|
||||
plt.axis('off') # Hide the axis
|
||||
plt.show()
|
||||
|
||||
# Process images in folder
|
||||
def process_images_in_folder(input_folder, output_folder):
|
||||
os.makedirs(output_folder, exist_ok=True)
|
||||
|
||||
for filename in os.listdir(input_folder):
|
||||
if filename.lower().endswith((".jpg", ".jpeg", ".png")):
|
||||
image_path = os.path.join(input_folder, filename)
|
||||
process_image(image_path, output_folder)
|
||||
|
||||
input_folder = "in"
|
||||
output_folder = "out"
|
||||
|
||||
process_images_in_folder(input_folder, output_folder)
|
|
@ -0,0 +1,62 @@
|
|||
import cv2
|
||||
import numpy as np
|
||||
import os
|
||||
import matplotlib.pyplot as plt
|
||||
|
||||
# Function to process each image
|
||||
def process_image(image_path, output_folder):
|
||||
image = cv2.imread(image_path)
|
||||
|
||||
# BGR to RGB
|
||||
image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
|
||||
|
||||
# Define color ranges
|
||||
lower_black = np.array([0, 0, 0], dtype=np.uint8)
|
||||
upper_black = np.array([50, 50, 50], dtype=np.uint8)
|
||||
|
||||
lower_white = np.array([200, 200, 200], dtype=np.uint8)
|
||||
upper_white = np.array([255, 255, 255], dtype=np.uint8)
|
||||
|
||||
lower_red = np.array([100, 0, 0], dtype=np.uint8)
|
||||
upper_red = np.array([255, 50, 50], dtype=np.uint8)
|
||||
|
||||
# Create color masks
|
||||
mask_black = cv2.inRange(image_rgb, lower_black, upper_black)
|
||||
mask_white = cv2.inRange(image_rgb, lower_white, upper_white)
|
||||
mask_red = cv2.inRange(image_rgb, lower_red, upper_red)
|
||||
|
||||
# Create an output mask where black == 0, white == 2, red == 3
|
||||
output_mask = np.zeros(image_rgb.shape[:2], dtype=np.uint8)
|
||||
output_mask[mask_black != 0] = 0
|
||||
output_mask[mask_white != 0] = 2
|
||||
output_mask[mask_red != 0] = 3
|
||||
|
||||
# Define output filename
|
||||
filename = os.path.splitext(os.path.basename(image_path))[0]
|
||||
output_filename = f"{filename}_color_mask_test.png"
|
||||
output_path = os.path.join(output_folder, output_filename)
|
||||
|
||||
# Save image
|
||||
cv2.imwrite(output_path, output_mask)
|
||||
print(f"Processed: {image_path} -> {output_path}")
|
||||
|
||||
# Display the output
|
||||
plt.figure(figsize=(6, 6))
|
||||
plt.title('Grayscale Color Mask')
|
||||
plt.imshow(output_mask, cmap='gray', vmin=0, vmax=3)
|
||||
plt.axis('off') # Hide the axis
|
||||
plt.show()
|
||||
|
||||
# Process all images in folder
|
||||
def process_images_in_folder(input_folder, output_folder):
|
||||
os.makedirs(output_folder, exist_ok=True)
|
||||
|
||||
for filename in os.listdir(input_folder):
|
||||
if filename.lower().endswith((".jpg", ".jpeg", ".png")):
|
||||
image_path = os.path.join(input_folder, filename)
|
||||
process_image(image_path, output_folder)
|
||||
|
||||
input_folder = "in"
|
||||
output_folder = "out"
|
||||
|
||||
process_images_in_folder(input_folder, output_folder)
|
Loading…
Reference in New Issue