赞
踩
import cv2 as cv
filedir = r"../originalimg/" # 原始图像文件夹路径
m = 1 # 剪裁后图像的名字标号初始化
h,w = 720,1280 # 输入图像的原始尺寸,不知道的话可以print(cv.imread(随便一张图的路径).shape)看一下
expecth,expectw = 416,416 # 生成图像的高和宽
"""
一张大的图像想要被分割成多张小的图像作为训练集的输入
流程如下:
遍历文件夹内的图像文件
打开一张图像
鼠标点击roi区域
保存这张图像上的所有roi子图像像素索引
根据像素索引
生成期望尺寸的roi子图像
保存子图像到新的文件夹中
"""
def on_EVENT_LBUTTONDOWN(event, x, y, flags, param): # 鼠标左键点击事件
if event == cv.EVENT_LBUTTONDOWN:
xl = x - expectw/2 if x - expectw/2 > 0 else 0 # roi图像宽度索引的限制
xr = x + expectw/2 if x + expectw/2 < w-1 else w-1
yl = y - expecth/2 if y - expecth/2 > 0 else 0 # roi图像宽度索引的限制
yr = y + expecth/2 if y + expecth/2 < h-1 else h-1
coord.append([yl, yr, xl, xr]) # 储存到list
if __name__ == "__main__":
for i in range(1, 50): # 文件名字序号迭代
coord = [] # roi图像索引容器
filepath = filedir + str(i) + ".jpg" # 读取图像的地址
image = cv.imread(filepath) # 读取图像
cv.namedWindow("image") # 生成图窗
cv.setMouseCallback("image", on_EVENT_LBUTTONDOWN) # 鼠标点击图窗中roi中心可以返回坐标
cv.imshow("image", image) # 显示图像
cv.waitKey(0)
print(coord)
"""此刻就可以在同一张大图像中找出自己所有想要的roi像素索引
找完后关闭此图像进入下面的for循环存储此图中所有新生成的roi图像"""
for id in range(0, len(coord)):
pic_save = image[coord[id][0]:coord[id][1], coord[id][2]:coord[id][3]] # roi图像生成
cv.imwrite("../Testset/" + str(m) + ".jpg", pic_save) # 存储roi图像
m += 1 # 文件名字序号+1
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。