|
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) |
|
|