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

我们可以使用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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前方有酷路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值