#!/usr/bin/python # -*- coding: UTF-8 -*- from PIL import Image import os imgname = 0 def pingjie(imgs,weigh_size,high_size): print('------------pingjie-------------') global imgname target = Image.new('RGB', (weigh_size * 4, high_size * 1)) # 拼接前需要写拼接完成后的图片大小 1200*600 for i in range(len(imgs)): a = weigh_size * i # 图片距离左边的大小 b = 0 # 图片距离上边的大小 c = weigh_size * (i + 1) # 图片距离左边的大小 + 图片自身宽度 d = high_size # 图片距离上边的大小 + 图片自身高度 target.paste(imgs[i], (a, b, c, d)) print('拼接图片的路径为:', path1 + str(imgname) + '.jpg') target.save(path1 + "/" + str(imgname) + '.jpg') imgname += 1 def pj(): print('------------pj-------------') # 取1,3是因为每行拼接完整都是最后那个,第一行是0,1命名,第二行是2,3命名,所以取后面那个值 imglist = [0,1,2,3] img = [] for i in imglist: print('完整行的拼接路径为:' + path1 + "/" + str(i) + '.jpg') img.append(Image.open(path1 + "/" + str(i) + '.jpg')) target = Image.new('RGB', (weigh_size * 4, high_size * 4)) # 拼接前需要写拼接完成后的图片大小 1200*1200 for i in range(len(img)): a = 0 # 图片距离左边的大小 b = high_size * i # 图片距离上边的大小 c = weigh_size * 4 # 图片距离左边的大小 + 图片自身宽度 d = high_size * (i + 1) # 图片距离上边的大小 + 图片自身高度 target.paste(img[i], (a, b, c, d)) global imgname target.save(path1 + "/" + 'pingjie' + '.jpg') if __name__ == '__main__': weigh_size = 1840 # 图片的宽高都为600像素 high_size = 1228 filepath = './ceshi' # 存放要拼接图片的目录 path1 = './INTER_nearest' # 拼接后图片的存放目录 img_list = os.listdir(filepath) print(img_list) for i in range(4): # 有两行,所以需要循环两次 images = [] # 每一次拼接只能一行一行拼接,不能在第一行拼接完后再在其基础上拼接第二行的图片,矩阵不允许这样操作 for j in range(4): # 每行有两张图片,所以也要循环两次 a = i*4 + j images.append(Image.open(filepath + "/" + img_list[a])) print('第 {} 行拼接完成'.format(i)) pingjie(images, weigh_size,high_size) pj()
#!/usr/bin/python # -*- coding: UTF-8 -*- from PIL import Image import os imgname = 0 def pingjie(imgs,weigh_size,high_size): print('------------pingjie-------------') global imgname target = Image.new('RGB', (weigh_size * 4, high_size * 1)) # 拼接前需要写拼接完成后的图片大小 1200*600 for i in range(len(imgs)): a = weigh_size * i # 图片距离左边的大小 b = 0 # 图片距离上边的大小 c = weigh_size * (i + 1) # 图片距离左边的大小 + 图片自身宽度 d = high_size # 图片距离上边的大小 + 图片自身高度 target.paste(imgs[i], (a, b, c, d)) print('拼接图片的路径为:', path1 + str(imgname) + '.jpg') target.save(path1 + "/" + str(imgname) + '.jpg') imgname += 1 def pj(k): print('------------pj-------------') # 取1,3是因为每行拼接完整都是最后那个,第一行是0,1命名,第二行是2,3命名,所以取后面那个值 imglist = os.listdir(path1) #imglist = [0,1,2,3] print(imglist) j = int(4*k) img = [] for i in range(4): print('完整行的拼接路径为:%s' % (path1 + "/" + imglist[i+j] + '.jpg')) img.append(Image.open(path1 + "/" + str(i+j) + '.jpg')) target = Image.new('RGB', (weigh_size * 4, high_size * 4)) # 拼接前需要写拼接完成后的图片大小 1200*1200 for i in range(4): a = 0 # 图片距离左边的大小 b = high_size * i # 图片距离上边的大小 c = weigh_size * 4 # 图片距离左边的大小 + 图片自身宽度 d = high_size * (i + 1) # 图片距离上边的大小 + 图片自身高度 target.paste(img[i], (a, b, c, d)) global imgname with open('somefile.txt', 'r') as f: content = f.read().splitlines() target.save(path2 + "/" + content[k] + '.jpg') def cut_image(image): width, height = image.size item_width = int(width / 4) item_height = int(height / 4) box_list = [] # (left, upper, right, lower) for i in range(0,4): for j in range(0,4): #print((i*item_width,j*item_width,(i+1)*item_width,(j+1)*item_width)) box = (j*item_width,i*item_height,(j+1)*item_width,(i+1)*item_height) box_list.append(box) image_list = [image.crop(box) for box in box_list] return image_list #保存 def save_images(image_list,pic_file): index = 1 with open('somefile.txt', 'r') as f: content = f.read().splitlines() for image in image_list: image.save("./ceshi/" + pic_file + "_" + content[index] + ".jpg") index += 1 if __name__ == '__main__': org_img_path = "./INTER_cubic" # filepath = r"./DSC00001.jpg_2.jpg" for pic_file in os.listdir(org_img_path): print(pic_file) file_path = os.path.join(org_img_path, pic_file) image = Image.open(file_path) image_list = cut_image(image) save_images(image_list, pic_file) print("图片分割完毕") weigh_size = 1840 # 图片的宽高都为600像素 high_size = 1228 after_spli_img_path = './ceshi' # 存放要拼接图片的目录 path1 = './INTER_nearest' # 拼接后图片的存放目录 path2 = "./INTER_LANCZOS4" img_list = os.listdir(after_spli_img_path) for k in range(int(len(img_list)/16)): print(img_list) for i in range(4): # 有两行,所以需要循环两次 images = [] # 每一次拼接只能一行一行拼接,不能在第一行拼接完后再在其基础上拼接第二行的图片,矩阵不允许这样操作 for j in range(4): # 每行有两张图片,所以也要循环两次 a = k*16 + i*4 + j images.append(Image.open(after_spli_img_path + "/" + img_list[a])) print('第 {} 行拼接完成'.format(i)) pingjie(images, weigh_size,high_size) pj(k)
通过csv文件对图片画框。
#!/usr/bin/python # -*- coding: UTF-8 -*- import cv2 import os from PIL import Image import time def bouding_box(lines,input_pic,font,m,n,out_csv_path): for pic_file in os.listdir(input_pic): file_path = os.path.join(input_pic,pic_file) image = Image.open(file_path) img = cv2.imread(file_path) width, height = image.size #获取测试图片的宽和高 weight_avg = int(width / m) #获取原始图片分割后每张小图的宽 heigh_avg = int(height / n) #获取原始图片分割后每张小图的高 for i , name in enumerate(lines): #从csv文件每一行的第一列里获取原始图片的名字以及分割后生成的每一张小图片名字的后半部分 #具体可参照csv文件里图片的命名方式 img_name = name.split(",")[0].split("/")[1].split("_")[1].split(".")[0] # 分割后小图片名字的后半部分 org_img_name = name.split(",")[0].split("/")[1].split("_")[0] + ".jpg" # 测试图片的名字 label_name = name.split(",")[5] # 获取对应方框的类别名 score = name.split(",")[6] #获取每一个类别的得分值 score = float(score) text = label_name + ":" + str(round(score,2)) #图片上每个框的类别及得分值 #当类别名为crack时 if label_name == "crack": if org_img_name == pic_file: if img_name == "DS01": #原始图片分割出来的第一张小图片 new_xmin = int(name.split(",")[1]) new_ymin = int(name.split(",")[2]) new_xmax = int(name.split(",")[3]) new_ymax = int(name.split(",")[4]) cv2.rectangle(img, (new_xmin, new_ymin), (new_xmax, new_ymax), (0, 255, 0), 4) cv2.putText(img, text, (new_xmin+10, new_ymin-10), font, 2, (0, 255, 0), 1) WriteinCSV(out_csv_path, pic_file, str(new_xmin), str(new_ymin), str(new_xmax), str(new_ymax), label_name, str(score)) elif img_name == "DS02": #原始图片分割出来的第二张小图片 new_xmin = int(name.split(",")[1]) + int(weight_avg) new_ymin = int(name.split(",")[2]) new_xmax = int(name.split(",")[3])+ int(weight_avg) new_ymax = int(name.split(",")[4]) cv2.rectangle(img, (new_xmin, new_ymin), (new_xmax, new_ymax), (0, 255, 0), 4) cv2.putText(img, text, (new_xmin + 10, new_ymin - 10), font, 2, (0, 255, 0), 1) WriteinCSV(out_csv_path, pic_file, str(new_xmin), str(new_ymin), str(new_xmax), str(new_ymax), label_name, str(score)) elif img_name == "DS03": #原始图片分割出来的第三张小图片 new_xmin = int(name.split(",")[1]) + int(weight_avg)*2 new_ymin = int(name.split(",")[2]) new_xmax = int(name.split(",")[3]) + int(weight_avg)*2 new_ymax = int(name.split(",")[4]) cv2.rectangle(img, (new_xmin, new_ymin), (new_xmax, new_ymax), (0, 255, 0), 4) cv2.putText(img, text, (new_xmin + 10, new_ymin - 10), font, 2, (0, 255, 0), 1) WriteinCSV(out_csv_path, pic_file, str(new_xmin), str(new_ymin), str(new_xmax), str(new_ymax), label_name, str(score)) elif img_name == "DS04": #原始图片分割出来的第四张小图片 new_xmin = int(name.split(",")[1]) + int(weight_avg)*3 new_ymin = int(name.split(",")[2]) new_xmax = int(name.split(",")[3]) + int(weight_avg)*3 new_ymax = int(name.split(",")[4]) cv2.rectangle(img, (new_xmin, new_ymin), (new_xmax, new_ymax), (0, 255, 0), 4) cv2.putText(img, text, (new_xmin + 10, new_ymin - 10), font, 2, (0, 255, 0), 1) WriteinCSV(out_csv_path, pic_file, str(new_xmin), str(new_ymin), str(new_xmax), str(new_ymax), label_name, str(score)) elif img_name == "DS05": #原始图片分割出来的第五张小图片 new_xmin = int(name.split(",")[1]) new_ymin = int(name.split(",")[2]) + int(heigh_avg) new_xmax = int(name.split(",")[3]) new_ymax = int(name.split(",")[4]) + int(heigh_avg) cv2.rectangle(img, (new_xmin, new_ymin), (new_xmax, new_ymax), (0, 255, 0), 4) cv2.putText(img, text, (new_xmin + 10, new_ymin - 10), font, 2, (0, 255, 0), 1) WriteinCSV(out_csv_path, pic_file, str(new_xmin), str(new_ymin), str(new_xmax), str(new_ymax), label_name, str(score)) elif img_name == "DS06": #原始图片分割出来的第六张小图片 new_xmin = int(name.split(",")[1]) + int(weight_avg) new_ymin = int(name.split(",")[2]) + int(heigh_avg) new_xmax = int(name.split(",")[3]) + int(weight_avg) new_ymax = int(name.split(",")[4]) + int(heigh_avg) cv2.rectangle(img, (new_xmin, new_ymin), (new_xmax, new_ymax), (0, 255, 0), 4) cv2.putText(img, text, (new_xmin + 10, new_ymin - 10), font, 2, (0, 255, 0), 1) WriteinCSV(out_csv_path, pic_file, str(new_xmin), str(new_ymin), str(new_xmax), str(new_ymax), label_name, str(score)) elif img_name == "DS07": #原始图片分割出来的第七张小图片 new_xmin = int(name.split(",")[1]) + int(weight_avg)*2 new_ymin = int(name.split(",")[2]) + int(heigh_avg) new_xmax = int(name.split(",")[3]) + int(weight_avg)*2 new_ymax = int(name.split(",")[4]) + int(heigh_avg) cv2.rectangle(img, (new_xmin, new_ymin), (new_xmax, new_ymax), (0, 255, 0), 4) cv2.putText(img, text, (new_xmin + 10, new_ymin - 10), font, 2, (0, 255, 0), 1) WriteinCSV(out_csv_path, pic_file, str(new_xmin), str(new_ymin), str(new_xmax), str(new_ymax), label_name, str(score)) elif img_name == "DS08": #原始图片分割出来的第八张小图片 new_xmin = int(name.split(",")[1]) + int(weight_avg)*3 new_ymin = int(name.split(",")[2]) + int(heigh_avg) new_xmax = int(name.split(",")[3]) + int(weight_avg)*3 new_ymax = int(name.split(",")[4]) + int(heigh_avg) cv2.rectangle(img, (new_xmin, new_ymin), (new_xmax, new_ymax), (0, 255, 0), 4) cv2.putText(img, text, (new_xmin + 10, new_ymin - 10), font, 2, (0, 255, 0), 1) WriteinCSV(out_csv_path, pic_file, str(new_xmin), str(new_ymin), str(new_xmax), str(new_ymax), label_name, str(score)) elif img_name == "DS09": #原始图片分割出来的第九张小图片 new_xmin = int(name.split(",")[1]) new_ymin = int(name.split(",")[2]) + int(heigh_avg)*2 new_xmax = int(name.split(",")[3]) new_ymax = int(name.split(",")[4]) + int(heigh_avg)*2 cv2.rectangle(img, (new_xmin, new_ymin), (new_xmax, new_ymax), (0, 255, 0), 4) cv2.putText(img, text, (new_xmin + 10, new_ymin - 10), font, 2, (0, 255, 0), 1) WriteinCSV(out_csv_path, pic_file, str(new_xmin), str(new_ymin), str(new_xmax), str(new_ymax), label_name, str(score)) elif img_name == "DS10": #原始图片分割出来的第十张小图片 new_xmin = int(name.split(",")[1]) + int(weight_avg) new_ymin = int(name.split(",")[2]) + int(heigh_avg) * 2 new_xmax = int(name.split(",")[3]) + int(weight_avg) new_ymax = int(name.split(",")[4]) + int(heigh_avg) * 2 cv2.rectangle(img, (new_xmin, new_ymin), (new_xmax, new_ymax), (0, 255, 0), 4) cv2.putText(img, text, (new_xmin + 10, new_ymin - 10), font, 2, (0, 255, 0), 1) WriteinCSV(out_csv_path, pic_file, str(new_xmin), str(new_ymin), str(new_xmax), str(new_ymax), label_name, str(score)) elif img_name == "DS11": #原始图片分割出来的第十一张小图片 new_xmin = int(name.split(",")[1]) + int(weight_avg)*2 new_ymin = int(name.split(",")[2]) + int(heigh_avg) * 2 new_xmax = int(name.split(",")[3]) + int(weight_avg)*2 new_ymax = int(name.split(",")[4]) + int(heigh_avg) * 2 cv2.rectangle(img, (new_xmin, new_ymin), (new_xmax, new_ymax), (0, 255, 0), 4) cv2.putText(img, text, (new_xmin + 10, new_ymin - 10), font, 2, (0, 255, 0), 1) WriteinCSV(out_csv_path, pic_file, str(new_xmin), str(new_ymin), str(new_xmax), str(new_ymax), label_name, str(score)) elif img_name == "DS12": #原始图片分割出来的第十二张小图片 new_xmin = int(name.split(",")[1]) + int(weight_avg)*3 new_ymin = int(name.split(",")[2]) + int(heigh_avg) * 2 new_xmax = int(name.split(",")[3]) + int(weight_avg)*3 new_ymax = int(name.split(",")[4]) + int(heigh_avg) * 2 cv2.rectangle(img, (new_xmin, new_ymin), (new_xmax, new_ymax), (0, 255, 0), 4) cv2.putText(img, text, (new_xmin + 10, new_ymin - 10), font, 2, (0, 255, 0), 1) WriteinCSV(out_csv_path, pic_file, str(new_xmin), str(new_ymin), str(new_xmax), str(new_ymax), label_name, str(score)) elif img_name == "DS13": #原始图片分割出来的第十三张小图片 new_xmin = int(name.split(",")[1]) new_ymin = int(name.split(",")[2]) + int(heigh_avg) * 3 new_xmax = int(name.split(",")[3]) new_ymax = int(name.split(",")[4]) + int(heigh_avg) * 3 cv2.rectangle(img, (new_xmin, new_ymin), (new_xmax, new_ymax), (0, 255, 0), 4) cv2.putText(img, text, (new_xmin + 10, new_ymin - 10), font, 2, (0, 255, 0), 1) WriteinCSV(out_csv_path, pic_file, str(new_xmin), str(new_ymin), str(new_xmax), str(new_ymax), label_name, str(score)) elif img_name == "DS14": #原始图片分割出来的第十四张小图片 new_xmin = int(name.split(",")[1]) + int(weight_avg) new_ymin = int(name.split(",")[2]) + int(heigh_avg) * 3 new_xmax = int(name.split(",")[3]) + int(weight_avg) new_ymax = int(name.split(",")[4]) + int(heigh_avg) * 3 cv2.rectangle(img, (new_xmin, new_ymin), (new_xmax, new_ymax), (0, 255, 0), 4) cv2.putText(img, text, (new_xmin + 10, new_ymin - 10), font, 2, (0, 255, 0), 1) WriteinCSV(out_csv_path, pic_file, str(new_xmin), str(new_ymin), str(new_xmax), str(new_ymax), label_name, str(score)) elif img_name == "DS15": #原始图片分割出来的第十五张小图片 new_xmin = int(name.split(",")[1]) + int(weight_avg)*2 new_ymin = int(name.split(",")[2]) + int(heigh_avg) * 3 new_xmax = int(name.split(",")[3]) + int(weight_avg)*2 new_ymax = int(name.split(",")[4]) + int(heigh_avg) * 3 cv2.rectangle(img, (new_xmin, new_ymin), (new_xmax, new_ymax), (0, 255, 0), 4) cv2.putText(img, text, (new_xmin + 10, new_ymin - 10), font, 2, (0, 255, 0), 1) WriteinCSV(out_csv_path, pic_file, str(new_xmin), str(new_ymin), str(new_xmax), str(new_ymax), label_name, str(score)) elif img_name == "DS16": #原始图片分割出来的第十六张小图片 new_xmin = int(name.split(",")[1]) + int(weight_avg)*3 new_ymin = int(name.split(",")[2]) + int(heigh_avg) * 3 new_xmax = int(name.split(",")[3]) + int(weight_avg)*3 new_ymax = int(name.split(",")[4]) + int(heigh_avg) * 3 cv2.rectangle(img, (new_xmin, new_ymin), (new_xmax, new_ymax), (0, 255, 0), 4) cv2.putText(img, text, (new_xmin + 10, new_ymin - 10), font, 2, (0, 255, 0), 1) WriteinCSV(out_csv_path, pic_file, str(new_xmin), str(new_ymin), str(new_xmax), str(new_ymax), label_name, str(score)) #当类别名为line时 else: if org_img_name == pic_file: if img_name == "DS01": #原始图片分割出来的第一张小图片 new_xmin = int(name.split(",")[1]) new_ymin = int(name.split(",")[2]) new_xmax = int(name.split(",")[3]) new_ymax = int(name.split(",")[4]) cv2.rectangle(img, (new_xmin, new_ymin), (new_xmax, new_ymax), (255,0 , 0), 4) cv2.putText(img, text, (new_xmin + 10, new_ymin - 10), font, 2, (255, 0, 0), 1) WriteinCSV(out_csv_path, pic_file, str(new_xmin), str(new_ymin), str(new_xmax), str(new_ymax), label_name, str(score)) elif img_name == "DS02": #原始图片分割出来的第二张小图片 new_xmin = int(name.split(",")[1]) + int(weight_avg) new_ymin = int(name.split(",")[2]) new_xmax = int(name.split(",")[3]) + int(weight_avg) new_ymax = int(name.split(",")[4]) cv2.rectangle(img, (new_xmin, new_ymin), (new_xmax, new_ymax), (255, 0, 0), 4) cv2.putText(img, text, (new_xmin + 10, new_ymin - 10), font, 2, (255, 0, 0), 1) WriteinCSV(out_csv_path, pic_file, str(new_xmin), str(new_ymin), str(new_xmax), str(new_ymax), label_name, str(score)) elif img_name == "DS03": #原始图片分割出来的第三张小图片 new_xmin = int(name.split(",")[1]) + int(weight_avg) * 2 new_ymin = int(name.split(",")[2]) new_xmax = int(name.split(",")[3]) + int(weight_avg) * 2 new_ymax = int(name.split(",")[4]) cv2.rectangle(img, (new_xmin, new_ymin), (new_xmax, new_ymax), (255, 0, 0), 4) cv2.putText(img, text, (new_xmin + 10, new_ymin - 10), font, 2, (255, 0, 0), 1) WriteinCSV(out_csv_path, pic_file, str(new_xmin), str(new_ymin), str(new_xmax), str(new_ymax), label_name, str(score)) elif img_name == "DS04": #原始图片分割出来的第四张小图片 new_xmin = int(name.split(",")[1]) + int(weight_avg) * 3 new_ymin = int(name.split(",")[2]) new_xmax = int(name.split(",")[3]) + int(weight_avg) * 3 new_ymax = int(name.split(",")[4]) cv2.rectangle(img, (new_xmin, new_ymin), (new_xmax, new_ymax), (255, 0, 0), 4) cv2.putText(img, text, (new_xmin + 10, new_ymin - 10), font, 2, (255, 0, 0), 1) WriteinCSV(out_csv_path, pic_file, str(new_xmin), str(new_ymin), str(new_xmax), str(new_ymax), label_name, str(score)) elif img_name == "DS05": #原始图片分割出来的第五张小图片 new_xmin = int(name.split(",")[1]) new_ymin = int(name.split(",")[2]) + int(heigh_avg) new_xmax = int(name.split(",")[3]) new_ymax = int(name.split(",")[4]) + int(heigh_avg) cv2.rectangle(img, (new_xmin, new_ymin), (new_xmax, new_ymax), (255, 0, 0), 4) cv2.putText(img, text, (new_xmin + 10, new_ymin - 10), font, 2, (255, 0, 0), 1) WriteinCSV(out_csv_path, pic_file, str(new_xmin), str(new_ymin), str(new_xmax), str(new_ymax), label_name, str(score)) elif img_name == "DS06": #原始图片分割出来的第六张小图片 new_xmin = int(name.split(",")[1]) + int(weight_avg) new_ymin = int(name.split(",")[2]) + int(heigh_avg) new_xmax = int(name.split(",")[3]) + int(weight_avg) new_ymax = int(name.split(",")[4]) + int(heigh_avg) cv2.rectangle(img, (new_xmin, new_ymin), (new_xmax, new_ymax), (255, 0, 0), 4) cv2.putText(img, text, (new_xmin + 10, new_ymin - 10), font, 2, (255, 0, 0), 1) WriteinCSV(out_csv_path, pic_file, str(new_xmin), str(new_ymin), str(new_xmax), str(new_ymax), label_name, str(score)) elif img_name == "DS07": #原始图片分割出来的第七张小图片 new_xmin = int(name.split(",")[1]) + int(weight_avg) * 2 new_ymin = int(name.split(",")[2]) + int(heigh_avg) new_xmax = int(name.split(",")[3]) + int(weight_avg) * 2 new_ymax = int(name.split(",")[4]) + int(heigh_avg) cv2.rectangle(img, (new_xmin, new_ymin), (new_xmax, new_ymax), (255, 0, 0), 4) cv2.putText(img, text, (new_xmin + 10, new_ymin - 10), font, 2, (255, 0, 0), 1) WriteinCSV(out_csv_path, pic_file, str(new_xmin), str(new_ymin), str(new_xmax), str(new_ymax), label_name, str(score)) elif img_name == "DS08": #原始图片分割出来的第八张小图片 new_xmin = int(name.split(",")[1]) + int(weight_avg) * 3 new_ymin = int(name.split(",")[2]) + int(heigh_avg) new_xmax = int(name.split(",")[3]) + int(weight_avg) * 3 new_ymax = int(name.split(",")[4]) + int(heigh_avg) cv2.rectangle(img, (new_xmin, new_ymin), (new_xmax, new_ymax), (255, 0, 0), 4) cv2.putText(img, text, (new_xmin + 10, new_ymin - 10), font, 2, (255, 0, 0), 1) WriteinCSV(out_csv_path, pic_file, str(new_xmin), str(new_ymin), str(new_xmax), str(new_ymax), label_name, str(score)) elif img_name == "DS09": #原始图片分割出来的第九张小图片 new_xmin = int(name.split(",")[1]) new_ymin = int(name.split(",")[2]) + int(heigh_avg) * 2 new_xmax = int(name.split(",")[3]) new_ymax = int(name.split(",")[4]) + int(heigh_avg) * 2 cv2.rectangle(img, (new_xmin, new_ymin), (new_xmax, new_ymax), (255, 0, 0), 4) cv2.putText(img, text, (new_xmin + 10, new_ymin - 10), font, 2, (255, 0, 0), 1) WriteinCSV(out_csv_path, pic_file, str(new_xmin), str(new_ymin), str(new_xmax), str(new_ymax), label_name, str(score)) elif img_name == "DS10": #原始图片分割出来的第十张小图片 new_xmin = int(name.split(",")[1]) + int(weight_avg) new_ymin = int(name.split(",")[2]) + int(heigh_avg) * 2 new_xmax = int(name.split(",")[3]) + int(weight_avg) new_ymax = int(name.split(",")[4]) + int(heigh_avg) * 2 cv2.rectangle(img, (new_xmin, new_ymin), (new_xmax, new_ymax), (255, 0, 0), 4) cv2.putText(img, text, (new_xmin + 10, new_ymin - 10), font, 2, (255, 0, 0), 1) WriteinCSV(out_csv_path, pic_file, str(new_xmin), str(new_ymin), str(new_xmax), str(new_ymax), label_name, str(score)) elif img_name == "DS11": #原始图片分割出来的第十一张小图片 new_xmin = int(name.split(",")[1]) + int(weight_avg) * 2 new_ymin = int(name.split(",")[2]) + int(heigh_avg) * 2 new_xmax = int(name.split(",")[3]) + int(weight_avg) * 2 new_ymax = int(name.split(",")[4]) + int(heigh_avg) * 2 cv2.rectangle(img, (new_xmin, new_ymin), (new_xmax, new_ymax), (255, 0, 0), 4) cv2.putText(img, text, (new_xmin + 10, new_ymin - 10), font, 2, (255, 0, 0), 1) WriteinCSV(out_csv_path, pic_file, str(new_xmin), str(new_ymin), str(new_xmax), str(new_ymax), label_name, str(score)) elif img_name == "DS12": #原始图片分割出来的第十二张小图片 new_xmin = int(name.split(",")[1]) + int(weight_avg) * 3 new_ymin = int(name.split(",")[2]) + int(heigh_avg) * 2 new_xmax = int(name.split(",")[3]) + int(weight_avg) * 3 new_ymax = int(name.split(",")[4]) + int(heigh_avg) * 2 cv2.rectangle(img, (new_xmin, new_ymin), (new_xmax, new_ymax), (255, 0, 0), 4) cv2.putText(img, text, (new_xmin + 10, new_ymin - 10), font, 2, (255, 0, 0), 1) WriteinCSV(out_csv_path, pic_file, str(new_xmin), str(new_ymin), str(new_xmax), str(new_ymax), label_name, str(score)) elif img_name == "DS13": #原始图片分割出来的第十三张小图片 new_xmin = int(name.split(",")[1]) new_ymin = int(name.split(",")[2]) + int(heigh_avg) * 3 new_xmax = int(name.split(",")[3]) new_ymax = int(name.split(",")[4]) + int(heigh_avg) * 3 cv2.rectangle(img, (new_xmin, new_ymin), (new_xmax, new_ymax), (255, 0, 0), 4) cv2.putText(img, text, (new_xmin + 10, new_ymin - 10), font, 2, (255, 0, 0), 1) WriteinCSV(out_csv_path, pic_file, str(new_xmin), str(new_ymin), str(new_xmax), str(new_ymax), label_name, str(score)) elif img_name == "DS14": #原始图片分割出来的第十四张小图片 new_xmin = int(name.split(",")[1]) + int(weight_avg) new_ymin = int(name.split(",")[2]) + int(heigh_avg) * 3 new_xmax = int(name.split(",")[3]) + int(weight_avg) new_ymax = int(name.split(",")[4]) + int(heigh_avg) * 3 cv2.rectangle(img, (new_xmin, new_ymin), (new_xmax, new_ymax), (255, 0, 0), 4) cv2.putText(img, text, (new_xmin + 10, new_ymin - 10), font, 2, (255, 0, 0), 1) WriteinCSV(out_csv_path, pic_file, str(new_xmin), str(new_ymin), str(new_xmax), str(new_ymax), label_name, str(score)) elif img_name == "DS15": #原始图片分割出来的第五张小图片 new_xmin = int(name.split(",")[1]) + int(weight_avg) * 2 new_ymin = int(name.split(",")[2]) + int(heigh_avg) * 3 new_xmax = int(name.split(",")[3]) + int(weight_avg) * 2 new_ymax = int(name.split(",")[4]) + int(heigh_avg) * 3 cv2.rectangle(img, (new_xmin, new_ymin), (new_xmax, new_ymax), (255, 0, 0), 4) cv2.putText(img, text, (new_xmin + 10, new_ymin - 10), font, 2, (255, 0, 0), 1) WriteinCSV(out_csv_path, pic_file, str(new_xmin), str(new_ymin), str(new_xmax), str(new_ymax), label_name, str(score)) elif img_name == "DS16": #原始图片分割出来的第十六张小图片 new_xmin = int(name.split(",")[1]) + int(weight_avg) * 3 new_ymin = int(name.split(",")[2]) + int(heigh_avg) * 3 new_xmax = int(name.split(",")[3]) + int(weight_avg) * 3 new_ymax = int(name.split(",")[4]) + int(heigh_avg) * 3 cv2.rectangle(img, (new_xmin, new_ymin), (new_xmax, new_ymax), (255, 0, 0), 4) cv2.putText(img, text, (new_xmin + 10, new_ymin - 10), font, 2, (255, 0, 0), 1) WriteinCSV(out_csv_path, pic_file, str(new_xmin), str(new_ymin), str(new_xmax), str(new_ymax), label_name, str(score)) #cv2.imwrite("/home/jhy/wave_test/ultimate_img/" + pic_file, img) cv2.imwrite("./out_result/" + pic_file, img) end_time = time.time() print "一共耗时:%ds" % (end_time-start_time) #写入新的csv文件中 def WriteinCSV(OutputCSVFileName,image_name,xmin,ymin,xmax,ymax,label_name,score): WriteCSVFile = open(OutputCSVFileName, 'a') one_line_data = [image_name,xmin,ymin,xmax,ymax,label_name,score] WriteCSVFile.write(",".join(one_line_data) + "\n") WriteCSVFile.close() if __name__ == "__main__": start_time = time.time() m = 4 n = 4 #with open('/home/jhy/wave_test/reult_forktest_images/result.csv', 'r') as p: with open('./result.csv', 'r') as p: lines = p.read().splitlines() #读出csv文件的每一行数据 #input_pic = "/home/jhy/caffe-ssd/examples/images/ssd_test_image" input_pic = "./INTER_cubic" out_csv_path = "./out_result/new_result.csv" font = cv2.FONT_HERSHEY_DUPLEX #画框标注时的字体 bouding_box(lines,input_pic,font,m,n,out_csv_path)
单独处理csv文件,把分割后的图片生成的框的坐标还原到原始图片上
Resize_csv.py
#!/usr/bin/python # -*- coding: UTF-8 -*- import cv2 import os from PIL import Image def WriteinCSV(OutputCSVFileName,image_name,xmin,ymin,xmax,ymax,label_name,score): WriteCSVFile = open(OutputCSVFileName, 'a') one_line_data = [image_name,xmin,ymin,xmax,ymax,label_name,score] WriteCSVFile.write(",".join(one_line_data) + "\n") WriteCSVFile.close() def Resize_csv(lines,image,pic_file,m,n): width, height = image.size weight_avg = int(width / m) heigh_avg = int(height / n) for i , name in enumerate(lines): img_name = name.split(",")[0].split("/")[1].split("_")[1].split(".")[0] org_img_name = name.split(",")[0].split("/")[1].split("_")[0] + ".jpg" label_name = name.split(",")[5] score = name.split(",")[6] #score = float(score) if org_img_name == pic_file: if img_name == "DS01": new_xmin = int(name.split(",")[1]) new_ymin = int(name.split(",")[2]) new_xmax = int(name.split(",")[3]) new_ymax = int(name.split(",")[4]) WriteinCSV("new_csv", pic_file, str(new_xmin), str(new_ymin), str(new_xmax), str(new_ymax), label_name, str(score)) elif img_name == "DS02": new_xmin = int(name.split(",")[1]) + int(weight_avg) new_ymin = int(name.split(",")[2]) new_xmax = int(name.split(",")[3]) + int(weight_avg) new_ymax = int(name.split(",")[4]) WriteinCSV("new_csv", pic_file, str(new_xmin), str(new_ymin), str(new_xmax), str(new_ymax), label_name, str(score)) elif img_name == "DS03": new_xmin = int(name.split(",")[1]) + int(weight_avg) * 2 new_ymin = int(name.split(",")[2]) new_xmax = int(name.split(",")[3]) + int(weight_avg) * 2 new_ymax = int(name.split(",")[4]) WriteinCSV("new_csv", pic_file, str(new_xmin), str(new_ymin), str(new_xmax), str(new_ymax), label_name, str(score)) elif img_name == "DS04": new_xmin = int(name.split(",")[1]) + int(weight_avg) * 3 new_ymin = int(name.split(",")[2]) new_xmax = int(name.split(",")[3]) + int(weight_avg) * 3 new_ymax = int(name.split(",")[4]) WriteinCSV("new_csv", pic_file, str(new_xmin), str(new_ymin), str(new_xmax), str(new_ymax), label_name, str(score)) elif img_name == "DS05": new_xmin = int(name.split(",")[1]) new_ymin = int(name.split(",")[2]) + int(heigh_avg) new_xmax = int(name.split(",")[3]) new_ymax = int(name.split(",")[4]) + int(heigh_avg) WriteinCSV("new_csv", pic_file, str(new_xmin), str(new_ymin), str(new_xmax), str(new_ymax), label_name, str(score)) elif img_name == "DS06": new_xmin = int(name.split(",")[1]) + int(weight_avg) new_ymin = int(name.split(",")[2]) + int(heigh_avg) new_xmax = int(name.split(",")[3]) + int(weight_avg) new_ymax = int(name.split(",")[4]) + int(heigh_avg) WriteinCSV("new_csv", pic_file, str(new_xmin), str(new_ymin), str(new_xmax), str(new_ymax), label_name, str(score)) elif img_name == "DS07": new_xmin = int(name.split(",")[1]) + int(weight_avg) * 2 new_ymin = int(name.split(",")[2]) + int(heigh_avg) new_xmax = int(name.split(",")[3]) + int(weight_avg) * 2 new_ymax = int(name.split(",")[4]) + int(heigh_avg) WriteinCSV("new_csv", pic_file, str(new_xmin), str(new_ymin), str(new_xmax), str(new_ymax), label_name, str(score)) elif img_name == "DS08": new_xmin = int(name.split(",")[1]) + int(weight_avg) * 3 new_ymin = int(name.split(",")[2]) + int(heigh_avg) new_xmax = int(name.split(",")[3]) + int(weight_avg) * 3 new_ymax = int(name.split(",")[4]) + int(heigh_avg) WriteinCSV("new_csv", pic_file, str(new_xmin), str(new_ymin), str(new_xmax), str(new_ymax), label_name, str(score)) elif img_name == "DS09": new_xmin = int(name.split(",")[1]) new_ymin = int(name.split(",")[2]) + int(heigh_avg) * 2 new_xmax = int(name.split(",")[3]) new_ymax = int(name.split(",")[4]) + int(heigh_avg) * 2 WriteinCSV("new_csv", pic_file, str(new_xmin), str(new_ymin), str(new_xmax), str(new_ymax), label_name, str(score)) elif img_name == "DS10": new_xmin = int(name.split(",")[1]) + int(weight_avg) new_ymin = int(name.split(",")[2]) + int(heigh_avg) * 2 new_xmax = int(name.split(",")[3]) + int(weight_avg) new_ymax = int(name.split(",")[4]) + int(heigh_avg) * 2 WriteinCSV("new_csv", pic_file, str(new_xmin), str(new_ymin), str(new_xmax), str(new_ymax), label_name, str(score)) elif img_name == "DS11": new_xmin = int(name.split(",")[1]) + int(weight_avg) * 2 new_ymin = int(name.split(",")[2]) + int(heigh_avg) * 2 new_xmax = int(name.split(",")[3]) + int(weight_avg) * 2 new_ymax = int(name.split(",")[4]) + int(heigh_avg) * 2 WriteinCSV("new_csv", pic_file, str(new_xmin), str(new_ymin), str(new_xmax), str(new_ymax), label_name, str(score)) elif img_name == "DS12": new_xmin = int(name.split(",")[1]) + int(weight_avg) * 3 new_ymin = int(name.split(",")[2]) + int(heigh_avg) * 2 new_xmax = int(name.split(",")[3]) + int(weight_avg) * 3 new_ymax = int(name.split(",")[4]) + int(heigh_avg) * 2 WriteinCSV("new_csv", pic_file, str(new_xmin), str(new_ymin), str(new_xmax), str(new_ymax), label_name, str(score)) elif img_name == "DS13": new_xmin = int(name.split(",")[1]) new_ymin = int(name.split(",")[2]) + int(heigh_avg) * 3 new_xmax = int(name.split(",")[3]) new_ymax = int(name.split(",")[4]) + int(heigh_avg) * 3 WriteinCSV("new_csv", pic_file, str(new_xmin), str(new_ymin), str(new_xmax), str(new_ymax), label_name, str(score)) elif img_name == "DS14": new_xmin = int(name.split(",")[1]) + int(weight_avg) new_ymin = int(name.split(",")[2]) + int(heigh_avg) * 3 new_xmax = int(name.split(",")[3]) + int(weight_avg) new_ymax = int(name.split(",")[4]) + int(heigh_avg) * 3 WriteinCSV("new_csv", pic_file, str(new_xmin), str(new_ymin), str(new_xmax), str(new_ymax), label_name, str(score)) elif img_name == "DS15": new_xmin = int(name.split(",")[1]) + int(weight_avg) * 2 new_ymin = int(name.split(",")[2]) + int(heigh_avg) * 3 new_xmax = int(name.split(",")[3]) + int(weight_avg) * 2 new_ymax = int(name.split(",")[4]) + int(heigh_avg) * 3 WriteinCSV("new_csv", pic_file, str(new_xmin), str(new_ymin), str(new_xmax), str(new_ymax), label_name, str(score)) elif img_name == "DS16": new_xmin = int(name.split(",")[1]) + int(weight_avg) * 3 new_ymin = int(name.split(",")[2]) + int(heigh_avg) * 3 new_xmax = int(name.split(",")[3]) + int(weight_avg) * 3 new_ymax = int(name.split(",")[4]) + int(heigh_avg) * 3 WriteinCSV("new_csv", pic_file, str(new_xmin), str(new_ymin), str(new_xmax), str(new_ymax), label_name, str(score)) if __name__ == "__main__": m = 4 n = 4 with open('./result.csv', 'r') as p: #with open('./result.csv', 'r') as p: lines = p.read().splitlines() #input_pic = "/home/jhy/caffe-ssd/examples/images/ssd_test_image" input_pic = "./INTER_cubic" #font = cv2.FONT_HERSHEY_DUPLEX for pic_file in os.listdir(input_pic): file_path = os.path.join(input_pic, pic_file) image = Image.open(file_path) #img = cv2.imread(file_path) Resize_csv(lines,image,pic_file,m,n)