读取xminsit文件夹的全部图像,并对图像进行切分,以形成类似mnist的手写数据集。过程:1)先从图像中切割感兴趣区域,即四个黑点框定的区域;2)从感兴趣区域中切出每个数字的小片,并将每个小片按照如下的规则进行命名:图像原来的文件名_“行号”_“列号”.jpg
时间: 2024-04-30 21:21:09 浏览: 48
以下是Python代码实现:
```python
import os
import cv2
# 读取xminsit文件夹下的所有图像文件
img_folder = 'xminsit'
img_files = [os.path.join(img_folder, f) for f in os.listdir(img_folder) if f.endswith('.jpg')]
# 定义感兴趣区域的四个点坐标
roi_points = [(40, 30), (200, 30), (40, 190), (200, 190)]
# 定义每个数字小片的大小和间隔
digit_size = (28, 28)
digit_gap = 4
# 循环处理每个图像
for img_file in img_files:
# 读取图像
img = cv2.imread(img_file)
# 切割感兴趣区域
roi = img[roi_points[0][1]:roi_points[2][1], roi_points[0][0]:roi_points[1][0]]
# 循环切割每个数字小片
for i in range(4):
row = i // 2
col = i % 2
digit = roi[row*(digit_size[1]+digit_gap):(row+1)*digit_size[1]+row*digit_gap,
col*(digit_size[0]+digit_gap):(col+1)*digit_size[0]+col*digit_gap]
# 生成小片的文件名并保存
digit_file = '{}_{}_{}.jpg'.format(os.path.splitext(img_file)[0], row, col)
cv2.imwrite(digit_file, digit)
```
这段代码会读取`xminsit`文件夹下的所有`.jpg`文件,然后对每个图像进行处理。对于每个图像,先从中切割出感兴趣区域,然后循环切割出四个数字小片,命名并保存。每个小片的文件名由图像原来的文件名、行号和列号组成,中间用下划线分隔。
阅读全文