写一个将Fruits360数据集转换为二进制格式的python代码
时间: 2024-05-05 10:17:16 浏览: 13
以下是将Fruits360数据集转换为二进制格式的Python代码示例:
```python
import os
import numpy as np
import cv2
def convert_to_binary(data_dir, save_dir):
# 获取数据集中所有图像文件的路径
image_paths = []
for dirpath, dirnames, filenames in os.walk(data_dir):
for filename in filenames:
if filename.endswith('.jpg'):
image_paths.append(os.path.join(dirpath, filename))
# 创建二进制文件
with open(os.path.join(save_dir, 'fruits.bin'), 'wb') as f:
for image_path in image_paths:
# 读取图像文件并将其转换为二进制格式
image = cv2.imread(image_path)
binary_data = np.array(image).tobytes()
# 获取标签并将其转换为二进制格式
label = os.path.basename(os.path.dirname(image_path))
label_id = int(label.split('_')[0])
label_binary = np.array(label_id).tobytes()
# 将标签和图像数据写入二进制文件中
f.write(label_binary)
f.write(binary_data)
if __name__ == '__main__':
data_dir = 'fruits-360/Training'
save_dir = 'fruits-360-binary'
convert_to_binary(data_dir, save_dir)
```
这个示例代码将Fruits360数据集中的所有图像文件转换为二进制格式,并将其保存到一个名为`fruits.bin`的二进制文件中。每个图像的标签也被转换为二进制格式,并在每个图像数据的前面添加。二进制文件将保存在`fruits-360-binary`目录中。