Model / run /transform.py
CVRPDataset's picture
Update run/transform.py
5e15524 verified
import os
import cv2
import numpy as np
def rgb_to_binary_mask(img_path, output_path):
'''
Convert an RGB image to a binary mask where non-black pixels are set to 1, black pixels are 0.
'''
img_bgr = cv2.imread(img_path)
img_binary_mask = np.zeros(img_bgr.shape[:2], dtype=np.uint8)
non_black_pixels = np.any(img_bgr != [0, 0, 0], axis=-1)
img_binary_mask[non_black_pixels] = 1
cv2.imwrite(output_path, img_binary_mask)
def convert_rgb_to_binary(Dataset_Path):
'''
Convert all RGB images in the dataset to binary mask images.
'''
img_dir = os.path.join(Dataset_Path, 'annotation')
ann_target_dir = os.path.join(Dataset_Path, 'ann_dir')
if not os.path.exists(ann_target_dir):
os.mkdir(ann_target_dir)
for img_name in os.listdir(img_dir):
try:
img_path = os.path.join(img_dir, img_name)
mask_path = os.path.join(ann_target_dir, f'{os.path.splitext(img_name)[0]}.png')
rgb_to_binary_mask(img_path, mask_path)
except Exception as e:
print(f"Failed to convert {img_name}: {e}")
print("Conversion completed.")
if __name__ == '__main__':
Dataset_Path = 'CVRPDataset'
convert_rgb_to_binary(Dataset_Path)