Untitled
unknown
python
4 years ago
5.1 kB
7
Indexable
# -*- coding: utf-8 -*-
"""
Spyder Editor
This is a temporary script file.
"""
# import np as np
import OpenEXR
import os
import numbers
import Imath
import cv2
import numpy as np
import pickle
import random
def adjust_gamma(image, gamma=2.2):
# build a lookup table mapping the pixel values [0, 255] to
# their adjusted gamma values
invGamma = 1.0 / gamma
table = np.array([((i/255 ) ** invGamma) * 255
for i in np.arange(0, 256)]).astype("uint8")
# apply gamma correction using the lookup table
return cv2.LUT(image, table)
onlyfiles=[]
dataset_out ={}
dataset_out_train ={}
dataset_in={}
dataset_in["paths"]=[]
root= "/mnt/CAPOOM_STORAGE/Projects/IbrahimScripts/render/footprintrender/3d/"
count= 0
# for path, subdirs, files in os.walk(root):
# for name in files:
# onlyfiles.append(os.path.join(path, name))
# random.shuffle(onlyfiles)
# np.save("onlyfiles.npy",onlyfiles)
# onlyfiles = np.load("onlyfiles.npy")
with open( "/mnt/CAPOOM_STORAGE/Projects/IbrahimScripts/render/footprintrender/footprint.pickle", "rb" ) as f:
floos = pickle.load( f )
f.close()
# allboxes = floos["boxes"]
onlyfiles = floos["paths"]
for file in onlyfiles[:1]:
if file.endswith(".exr"):
# try:
exr = OpenEXR.InputFile(file)
exr2d = OpenEXR.InputFile(file.replace("3d", "2d"))
# exrd = OpenEXR.InputFile("/mnt/CAPOOM_STORAGE/Projects/IbrahimScripts/render/footprintrender/3d/009716.exr")
height = exr2d.header()['displayWindow'].max.y + 1 - exr2d.header()['displayWindow'].min.y
width = exr2d.header()['displayWindow'].max.x + 1 - exr2d.header()['displayWindow'].min.x
masks = []
boxes = []
for i,channel in enumerate(exr2d.header()["channels"]):
if i >3 and "B" in channel:
mask=np.reshape(np.frombuffer(exr2d.channel(channel, Imath.PixelType(Imath.PixelType.FLOAT)), dtype=np.float32), (height, width,1))
masks.append(np.squeeze(mask))
contours,_ = cv2.findContours(mask.astype("uint8").copy(), 1, 1) # not copying here will throw an error
contour = mask.astype("uint8").copy()
cv2.drawContours(contour,[contours[0]], 0, (0,0,255), 1)
cv2.imshow(contour)
peri = cv2.arcLength(contours[0], True)
corners = cv2.approxPolyDP(contours[0], 0.04 * peri, True)
rect = cv2.minAreaRect(contours[0]) # basically you can feed this rect into your classifier
(x,y),(w,h), a = rect
box = cv2.boxPoints(rect)
box =np.flip(np.int0(box),1)
boxes.append(box)
masks = np.transpose(np.array(masks),(1,2,0))
# Zb = np.expand_dims(np.reshape(np.frombuffer(exr.channel("puzzleMatte.B", Imath.PixelType(Imath.PixelType.FLOAT)), dtype=np.float32), (height, width)),axis=2)
# Zg = np.expand_dims(np.reshape(np.frombuffer(exr.channel("puzzleMatte.G", Imath.PixelType(Imath.PixelType.FLOAT)), dtype=np.float32), (height, width)),axis=2)
# Zr = np.expand_dims(np.reshape(np.frombuffer(exr.channel("puzzleMatte.R", Imath.PixelType(Imath.PixelType.FLOAT)), dtype=np.float32), (height, width)),axis=2)
# Z= np.concatenate( (Zb,Zg,Zr),axis=2)
# Z= cv2.convertScaleAbs(Z, alpha=(255.0))
image = cv2.imread(file, cv2.IMREAD_UNCHANGED)
image = cv2.convertScaleAbs(image, alpha=(255.0))
image=adjust_gamma(image[:,:,:3],2.2)
if count % 100 ==0:
print(count)
# dim= (224,224)
# resize and transpose image
# image = cv2.resize(image, dim, interpolation = cv2.INTER_LINEAR).transpose((1,0,2))
# if "depth" in dataset_in:
# dataset_in["depth"].append(Z)
# else:
# dataset_in["depth"] =[ Z]
# if "image" in dataset_in:
# dataset_in["image"].append(image)
# else:
# dataset_in["image"] =[ image]
# if "name" in dataset_in:
# dataset_in["name"].append(file.split("/")[-1])
# else:
# dataset_in["name"] =[ file.split("/")[-1]]
for key, value in exr.header().items():
if ('rs/' not in key) and isinstance(value, (int, float,numbers.Integral)) :
if key in dataset_out:
dataset_out[key].append(value)
else:
dataset_out[key]= [str(type(value)),value]
# dataset_out[key] =[ value]
dataset_in["paths"].append(file)
count +=1
except:
print(file)
print("0")
# picked={"unique":unique,"cls_order":classes,"reg_order":regs,"paths":dataset_in["paths"],"all_keys":all_keys}
pickle.dump( dataset_in, open( "/mnt/CAPOOM_STORAGE/Projects/IbrahimScripts/render/footprintrender/footprint.pickle", "wb" ) )
Editor is loading...