Python+Opencv图片任意倍数分割并保存到指定路径

    技术2022-07-11  116

    我们可以使用opencv的函数加上python代码的编写对单个图片进行任意倍数的分割。

    直接开始:

    首先导入Opencv库

    import cv2

    然后我们设置分割的倍数

    cut_row = 5 # 行切割份数 cut_col = 5 # 列切割份数

    接下来读取图片(换成你要处理的图片路径)

    original_image = cv2.imread(r'.\路径\xxx.png')

    获取图片尺寸

    cutting_step_row = row/cut_row # 行移动步长 cutting_step_col = col/cut_col # 列移动步长 cutting_row = row/cut_row # 裁剪图像的行数 cutting_col = col/cut_col # 裁剪图像的列数 index = 1 # 图片的命名序号

    进行处理(记得更换路径)

    # i代表行 j代表列 # 四张图分别为左上,左下,右上,右下 for i in range(cut_row): for j in range(cut_col): print('i=', i) print('j=', j) y0 = 0 + j * cutting_step_col # 初始起始点列坐标 + 水平方向移动参数 * 列移动步长 y1 = cutting_col + j * cutting_step_col # 初始截至点列坐标 + 水平方向移动参数 * 列移动步长 x0 = 0 + i * cutting_step_row # 初始起始点横坐标 + 垂直方向移动参数 * 行移动步长 x1 = cutting_row + i * cutting_step_row # 初始截至点列坐标 + 垂直方向移动参数 * 行移动步长 # 切割 cropped = original_image[int(y0):int(y1), int(x0):int(x1)] # 保存 if index < 10: cv2.imwrite('\路径\' + str(index) + ".jpg", cropped) index = index + 1 elif index < 100: cv2.imwrite('\路径\' + str(index) + ".jpg", cropped) index = index + 1

    结果展示

    原图:

    处理以后的结果(分割为9份):

    处理以后的结果(分割为25份):

    整体代码(记得修改路径)

    import cv2 # 设置切割份数 cut_row = 5 # 行切割份数 cut_col = 5 # 列切割份数 # 读取图片 original_image = cv2.imread(r'C:\Users\Administrator\Desktop\fg\yt\0002.png') # 获取图片尺寸 row, col, cha = original_image.shape print('row=', row) print('col=', col) print('cha=', cha) # 设置图片切割的步长及切割后图片的尺寸 cutting_step_row = row/cut_row # 行移动步长 cutting_step_col = col/cut_col # 列移动步长 cutting_row = row/cut_row # 裁剪图像的行数 cutting_col = col/cut_col # 裁剪图像的列数 index = 1 # 图片的命名序号 # i代表行 j代表列 # 四张图分别为左上,左下,右上,右下 for i in range(cut_row): for j in range(cut_col): print('i=', i) print('j=', j) y0 = 0 + j * cutting_step_col # 初始起始点列坐标 + 水平方向移动参数 * 列移动步长 y1 = cutting_col + j * cutting_step_col # 初始截至点列坐标 + 水平方向移动参数 * 列移动步长 x0 = 0 + i * cutting_step_row # 初始起始点横坐标 + 垂直方向移动参数 * 行移动步长 x1 = cutting_row + i * cutting_step_row # 初始截至点列坐标 + 垂直方向移动参数 * 行移动步长 # 切割 cropped = original_image[int(y0):int(y1), int(x0):int(x1)] # 保存 if index < 10: cv2.imwrite('C:\\Users\\Administrator\\Desktop\\fg\\before\\000' + str(index) + ".jpg", cropped) index = index + 1 elif index < 100: cv2.imwrite('C:\\Users\\Administrator\\Desktop\\fg\\before\\00' + str(index) + ".jpg", cropped) index = index + 1
    Processed: 0.012, SQL: 9