# -*- coding: utf-8 -*-
import cv2
import os
import sys
import pdb
import numpy as np
import tensorflow
import math
import csv
def checkedge(image_path,image_savepath,label_path,label_savepath):
print(image_path)
image_savepath = image_savepath
label_ls = os.listdir(label_path)
print(label_ls)
for ls in label_ls:
name = ls[0 : -4]
image = cv2.imread(image_path +'/' +name+ '.jpg')
height, width, channel = image.shape
label_file_name = os.path.join(label_path, ls)
print(label_savepath+ '/' +"00" + ls[0 : -4] + ".txt")
label_file_1 = open(label_savepath+ '/' +"15" + ls[0 : -4] + ".txt", 'w')
with open(label_file_name) as f:
reader = csv.reader(f)
data =[]
xmin =[]
xmax =[]
ymin =[]
ymax =[]
before=[]
after =[]
for row in reader:
obj = row[0].strip().split(' ')
box = [obj[4], obj[5], obj[6], obj[7]]
xmin.append(float(box[0]))
ymin.append(float(box[1]))
xmax.append(float(box[2]))
ymax.append(float(box[3]))
before.append(obj[:4])
after.append(obj[8:])
l = np.min(xmin)
r = np.max(xmax)
low = np.min(ymin)
up = np.max(ymax)
if int(r-l<300) and int(l-(300-(r-l))/2) >0 and int(r+(300-(r-l))/2)< width:
c = (300-(r-l))/2
r = r + c
l = l - c
print(r-l)
if int(up-low<300) and int(low-(300-(up-low))/2)>0 and int(up+(300-(up-low))/2) < height:
c = (300-(up-low))/2
up = up + c
low = low - c
print(up-low)
if l == 0:
l+=1
for i in range(len(xmin)):
if xmin[i] == l:
xmin[i] = 0
else:
xmin[i] = xmin[i]-l
for i in range(len(ymin)):
if ymin[i] == low:
ymin[i] = 0
else:
ymin[i] = ymin[i]-low
xmax = [x-l for x in xmax ]
ymax = [y-low for y in ymax]
for i in range(len(xmin)):
label_file_1.write(before[i][0] + ' '+before[i][1] + ' '+before[i][2] + ' ' +before[i][3] + ' '+ str(xmin[i]) + ' ' + str(ymin[i]) + ' ' + str(xmax[i]) + ' ' + str(ymax[i]) + ' '+after[i][0] + ' '+after[i][1] + ' '+after[i][2] + ' ' +after[i][3] + ' '+after[i][4] + ' '+after[i][5] + ' '+after[i][6]+ '\n')
label_file_1.close()
image_2 = image[int(low):int(up),int(l):int(r)]
print(int(low),int(up))
print(int(l),int(r))
for i in range(len(xmin)):
#print(int(xmin[i]),int(ymin[i]),int(xmax[i]),int(ymax[i]))
cv2.rectangle(image_2, (int(xmin[i]),int(ymin[i])), (int(xmax[i]),int(ymax[i])), (0,0,0),2)
cv2.imwrite(image_savepath +'/'+"00" + name + ".jpg", image_2)
image_path = r"/data1/dataset/udacity/half/training/image_2"
image_savepath = r"/data1/dataset/udacity/half2/training/image_3"
label_path = r"/data1/dataset/udacity/half/training/label_2"
label_savepath= r"/data1/dataset/udacity/half2/training/label_3"
checkedge(image_path,image_savepath,label_path,label_savepath)
import cv2
import os
import sys
import pdb
import numpy as np
import tensorflow
import math
import csv
def checkedge(image_path,image_savepath,label_path,label_savepath):
print(image_path)
image_savepath = image_savepath
label_ls = os.listdir(label_path)
print(label_ls)
for ls in label_ls:
name = ls[0 : -4]
image = cv2.imread(image_path +'/' +name+ '.jpg')
height, width, channel = image.shape
label_file_name = os.path.join(label_path, ls)
print(label_savepath+ '/' +"00" + ls[0 : -4] + ".txt")
label_file_1 = open(label_savepath+ '/' +"15" + ls[0 : -4] + ".txt", 'w')
with open(label_file_name) as f:
reader = csv.reader(f)
data =[]
xmin =[]
xmax =[]
ymin =[]
ymax =[]
before=[]
after =[]
for row in reader:
obj = row[0].strip().split(' ')
box = [obj[4], obj[5], obj[6], obj[7]]
xmin.append(float(box[0]))
ymin.append(float(box[1]))
xmax.append(float(box[2]))
ymax.append(float(box[3]))
before.append(obj[:4])
after.append(obj[8:])
l = np.min(xmin)
r = np.max(xmax)
low = np.min(ymin)
up = np.max(ymax)
if int(r-l<300) and int(l-(300-(r-l))/2) >0 and int(r+(300-(r-l))/2)< width:
c = (300-(r-l))/2
r = r + c
l = l - c
print(r-l)
if int(up-low<300) and int(low-(300-(up-low))/2)>0 and int(up+(300-(up-low))/2) < height:
c = (300-(up-low))/2
up = up + c
low = low - c
print(up-low)
if l == 0:
l+=1
for i in range(len(xmin)):
if xmin[i] == l:
xmin[i] = 0
else:
xmin[i] = xmin[i]-l
for i in range(len(ymin)):
if ymin[i] == low:
ymin[i] = 0
else:
ymin[i] = ymin[i]-low
xmax = [x-l for x in xmax ]
ymax = [y-low for y in ymax]
for i in range(len(xmin)):
label_file_1.write(before[i][0] + ' '+before[i][1] + ' '+before[i][2] + ' ' +before[i][3] + ' '+ str(xmin[i]) + ' ' + str(ymin[i]) + ' ' + str(xmax[i]) + ' ' + str(ymax[i]) + ' '+after[i][0] + ' '+after[i][1] + ' '+after[i][2] + ' ' +after[i][3] + ' '+after[i][4] + ' '+after[i][5] + ' '+after[i][6]+ '\n')
label_file_1.close()
image_2 = image[int(low):int(up),int(l):int(r)]
print(int(low),int(up))
print(int(l),int(r))
for i in range(len(xmin)):
#print(int(xmin[i]),int(ymin[i]),int(xmax[i]),int(ymax[i]))
cv2.rectangle(image_2, (int(xmin[i]),int(ymin[i])), (int(xmax[i]),int(ymax[i])), (0,0,0),2)
cv2.imwrite(image_savepath +'/'+"00" + name + ".jpg", image_2)
image_path = r"/data1/dataset/udacity/half/training/image_2"
image_savepath = r"/data1/dataset/udacity/half2/training/image_3"
label_path = r"/data1/dataset/udacity/half/training/label_2"
label_savepath= r"/data1/dataset/udacity/half2/training/label_3"
checkedge(image_path,image_savepath,label_path,label_savepath)