#coding=utf-8
import cv2
import random
import os
import numpy as np
from tqdm import tqdm
def solve():
cur_src="E:/CCF_competition/remote_sensing_image/unet_buildings/unet_buildings/newsrc/jpg/"
cur_label="E:/CCF_competition/remote_sensing_image/unet_buildings/unet_buildings/newlabel/"
for i in range(1,2):
count = 1
cur_url="{}{}.jpg".format(cur_src,i)
cur_url_label = "{}{}.png".format(cur_label,i)
print(cur_url)
now = cv2.imread(cur_url)
now_label = cv2.imread(cur_url_label)
w,h,_ = now.shape
for k in range(w//256):
for kk in range(h//256):
s_img = now[k*256:(k+1)*256,kk*256:(kk+1)*256,:]
l_img = now_label[k*256:(k+1)*256,kk*256:(kk+1)*256,:]
cv2.imwrite("{}{}/{}_{}.jpg".format(cur_src,"cut",i,count),s_img)
cv2.imwrite("{}{}/{}_{}.png".format(cur_label,"cut",i,count),l_img)
count +=1
while count<=2500:
j = random.randint(0,5)
if j<=3:
x_min=random.randint(0,w-512)
y_min=random.randint(0,h-512)
s_img = now[x_min:x_min+512,y_min:y_min+512,:]
l_img = now_label[x_min:x_min+512,y_min:y_min+512,:]
cv2.imwrite("{}{}/{}_{}.jpg".format(cur_src,"cut",i,count),s_img)
cv2.imwrite("{}{}/{}_{}.png".format(cur_label,"cut",i,count),l_img)
else:
x_min=random.randint(0,w-1024)
y_min=random.randint(0,h-1024)
s_img = now[x_min:x_min+1024,y_min:y_min+1024,:]
l_img = now_label[x_min:x_min+1024,y_min:y_min+1024,:]
cv2.imwrite("{}{}/{}_{}.jpg".format(cur_src,"cut",i,count),s_img)
cv2.imwrite("{}{}/{}_{}.png".format(cur_label,"cut",i,count),l_img)
count += 1
if __name__ == '__main__':
solve()
该博客介绍了一个使用Python的OpenCV库批量裁剪图像的脚本。脚本遍历指定目录中的图片,对每张图片进行256x256的网格裁剪,并随机裁剪出512x512或1024x1024的图像,保存到新的文件夹中。这个过程对于数据增强或图像预处理非常有用。
4111

被折叠的 条评论
为什么被折叠?



