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