- 扫描旧照片进行数字化备份,对于整版的照片需要分别截取保存,扫描后的图片如下所示:
- 具体实现代码如下:
import cv2
import os
import glob
folder_path = 'test'
save_path = 'test2'
file_list = glob.glob(os.path.join(folder_path, '*.jpg'))
for i, file_path in enumerate(file_list):
img = cv2.imread(file_path)
height, width, _ = img.shape
scale = min(1.0, 1024/max(height, width))
img_resized = cv2.resize(img, None, fx=scale, fy=scale)
cv2.namedWindow('image')
cv2.imshow('image', img_resized)
rect_list = []
while True:
rect = cv2.selectROI('image', img_resized, False)
rect_resized = [int(x/scale) for x in rect]
if rect == (0, 0, 0, 0):
break
crop_img = img[rect_resized[1]:rect_resized[1]+rect_resized[3], rect_resized[0]:rect_resized[0]+rect_resized[2]]
rect_list.append(rect)
cv2.imwrite(os.path.join(save_path, f'{i+1}_{len(rect_list)}.jpg'), crop_img)
- 框选过程如图所示:
- 框选后利用空格或回车保存,如果需要跳到下一张图片,利用C键即可,循环到最后一张图片会自动跳出。最终效果如下: