---
# System prepended metadata

title: 影像處理

---

# 影像處理

更改dataset名稱 （記得先改錯誤的檔案名稱在moodle公告上）
```python=
def rename_ridiculous_dataset(org_image_folder, org_scaphoid_annotation_folder, org_fracture_annotation_folder, dest_folder, prefix="file_"):
    # Ensure the destination folder exists
    os.makedirs(dest_folder, exist_ok=True)
    dest_image_folder = os.path.join(dest_folder, "image")
    os.makedirs(dest_image_folder, exist_ok=True)
    dest_scaphoid_annotation_folder = os.path.join(dest_folder, "scaphoid_annotation")
    os.makedirs(dest_scaphoid_annotation_folder, exist_ok=True)
    dest_fracture_annotation_folder = os.path.join(dest_folder, "fracture_annotation")
    os.makedirs(dest_fracture_annotation_folder, exist_ok=True)
    # List all files in the source folder
    files_names = os.listdir(org_image_folder)
    files_names = [file_name.split('.')[0] for file_name in files_names]
    files_names = sorted(files_names, key=lambda x: int(''.join(filter(str.isdigit, x))) if any(char.isdigit() for char in x) else x)
    #print(files_names)
    
    filename_dict = {}
    index = 1
    count = 0
    for idx, name in enumerate(files_names, start=0):
        file_number = index
        current_name_number = re.split(r'[- ]+', name)[0]
        next_name_number = re.split(r'[- ]+', files_names[(idx+1) % len(files_names)])[0]
        #print(name_number)
        if 'LA' in name:
            label = f"LA-{file_number:03}"
        elif ('AP' in name) | ('OB' in name) | ('SC' in name):
            label = f"AP-{file_number:03}"
        else:
            label = f"fuck"
            #print(name)
        filename_dict[name] = label
        #print('current_numaber:', current_name_number, 'next_number:', next_name_number)
        if (current_name_number != next_name_number):
            index += 1
            count = 0
        elif (current_name_number == next_name_number)&(count == 0):
            count = 1
        else:
            index += 1

        print(name, ':', label)
        image_path = os.path.join(org_image_folder, name) + ".jpg"
        new_image_path = os.path.join(dest_image_folder, label) + ".jpg"
        shutil.copy(image_path, new_image_path)
        print(f"Renamed and copied: {image_path} -> {new_image_path}")

        scaphoid_annotation_path = os.path.join(org_scaphoid_annotation_folder, name) + ".json"
        new_scaphoid_annotation_path = os.path.join(dest_scaphoid_annotation_folder, label) + ".json"
        shutil.copy(scaphoid_annotation_path, new_scaphoid_annotation_path)
        print(f"Renamed and copied: {scaphoid_annotation_path} -> {new_scaphoid_annotation_path}")

        fracture_annotation_path = os.path.join(org_fracture_annotation_folder, name) + ".json"
        new_fracture_annotation_path = os.path.join(dest_fracture_annotation_folder, label) + ".json"
        shutil.copy(fracture_annotation_path, new_fracture_annotation_path)
        print(f"Renamed and copied: {fracture_annotation_path} -> {new_fracture_annotation_path}")
        print('\n')
```

使用範例
```
image_folder = "./ip_homework_data/scaphoid_detection/images"  # Replace with your source folder path
scaphoid_annotation_folder = "./ip_homework_data/scaphoid_detection/annotations"
fracture_annotation_folder = "./ip_homework_data/fracture_detection/annotations"
dest_folder = "./dataset"  # Replace with your destination folder path
rename_ridiculous_dataset(image_folder, scaphoid_annotation_folder, fracture_annotation_folder, dest_folder)
```