Advertisement
lamiastella

compute_accuracy_across_all_cvar_folders

Jul 13th, 2017
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 7.50 KB | None | 0 0
  1. import itertools
  2. import math
  3. from PIL import Image
  4. import numpy as np
  5. import cv2
  6. import glob
  7. import os
  8. import itertools
  9. import linecache
  10.  
  11. #os.system("C:\\OpenARK\\x64\\Release\\OpenARK-SDK.exe")
  12.  
  13. openark_line_count = 0
  14.  
  15. total_correct_fingertips_count = 0
  16. total_CVAR_fingertips = 0
  17. per_folder_correct_fingertips_count = {}
  18. per_folder_accuracy = {}
  19.  
  20.  
  21. CVAR_dataset_path = "E:\\datasets\\hand\\CVAR\\test"
  22.  
  23. openark_files = glob.glob("cvar_folders\\*.txt")
  24. for f in openark_files:
  25.     os.remove(f)
  26.  
  27. if os.path.exists('fingertips_openark.txt'):
  28.     openark_file = open("fingertips_openark.txt")
  29.     #openark_file_lines = openark_file.readlines()
  30.     for line in openark_file:
  31.         line_split = line.split(' ')
  32.         list_of_list = []
  33.         iterable = iter(line_split)
  34.         cvar_sliced = list(iter(lambda: list(itertools.islice(iterable, 3)), []))
  35.         cvar_sliced_reverse = cvar_sliced[::-1]
  36.         line_split = ' '.join(line.split(' ')[:]).rstrip()
  37.         line_split = line_split.split(' ')
  38.         CVAR_depth_image = line_split[0]
  39.         CVAR_dir = os.path.dirname(CVAR_depth_image)
  40.         for subdirs, dirs, files in os.walk(CVAR_dataset_path):
  41.             for dir in dirs:
  42.                 per_folder_correct_fingertips_count[dir] = 0
  43.                 per_folder_accuracy[dir] = 0
  44.                 root_path = CVAR_dataset_path + "\\" + dir
  45.                 fingertips_file = open(root_path + "\\" + "fingertips.txt", 'w')
  46.                 if (os.path.dirname(root_path+"\\") == CVAR_dir):
  47.                     with open("cvar_folders\\openark_"+os.path.basename(os.path.normpath(CVAR_dir))+".txt", 'a+') as openark_tmp_handle:
  48.                         openark_tmp_handle.write(line)
  49.                         #print(line+'\n')
  50.  
  51.  
  52.  
  53.  
  54. for subdirs, dirs, files in os.walk(CVAR_dataset_path):
  55.     for dir in dirs:
  56.         root_path = CVAR_dataset_path+"\\"+dir
  57.         fingertips_file = open(root_path+"\\"+"fingertips.txt", 'w')
  58.         with open(root_path+"\\"+"joint.txt") as joints_file:
  59.             next(joints_file)
  60.             for line in joints_file:
  61.                 line_split = ' '.join(line.split(' ')[1:]).rstrip()
  62.                 line_split = line_split.split(' ')
  63.                 list_of_list = []
  64.                 iterable = iter(line_split)
  65.                 sliced_list = list(iter(lambda: list(itertools.islice(iterable, 3)), []))
  66.                 fingertips = []
  67.                 # fingertips.extend([sliced_list[16], sliced_list[12], sliced_list[8], sliced_list[4], sliced_list[20]])
  68.                 fingertips.append(sliced_list[16])
  69.                 fingertips.append(sliced_list[12])
  70.                 fingertips.append(sliced_list[8])
  71.                 fingertips.append(sliced_list[4])
  72.                 fingertips.append(sliced_list[20])
  73.                 flat_list = [item for sublist in fingertips for item in sublist]
  74.                 str_flat_list = " ".join(str(x) for x in flat_list)
  75.                 fingertips_file.write(str_flat_list + "\n")
  76.  
  77.         fingertips_file.close()
  78.         for file in glob.glob("*_depth.png"):
  79.             im = Image.open(file, 'r')
  80.             width, height = im.size
  81.             pixel_val = list(im.getdata())
  82.             for i in range(len(pixel_val)):
  83.                 if (pixel_val[i] == 32001):
  84.                     pixel_val[i] = 0
  85.             np_arr = np.array(pixel_val)
  86.             np_reshaped = np_arr.reshape(height, width)
  87.             modified_depth_file = file[:-4] + '_modified.png'
  88.             cv2.imwrite(modified_depth_file, (np_reshaped).astype(np.uint16))
  89.  
  90.         cvar_file = open(root_path+"\\"+"fingertips.txt")
  91.         cvar_file_lines = cvar_file.readlines()
  92.         cvar_fingertips_count = len(cvar_file_lines) * 5
  93.         total_CVAR_fingertips += cvar_fingertips_count
  94.  
  95.         openark_cvar_handle = open("cvar_folders\\openark_"+dir+".txt")
  96.         #last_line = openark_cvar_handle.readlines()[-1]
  97.         for line in openark_cvar_handle:
  98.                 openark_line_count += 1
  99.                 #print(" line is {}".format(line))
  100.                 line_split = line.split(' ')
  101.                 #print(len(cvar_sliced_reverse))
  102.                 line_split = ' '.join(line.split(' ')[:]).rstrip()
  103.                 line_split = line_split.split(' ')
  104.                 CVAR_depth_image = line_split[0]
  105.                 #print(CVAR_folder)
  106.                 #print(os.path.dirname(CVAR_folder))
  107.                 CVAR_dir = os.path.dirname(CVAR_depth_image)
  108.  
  109.                 try:
  110.                     print("cvar depth image is {}".format(CVAR_depth_image))
  111.                     print("cvar file name is {}".format(os.path.basename(CVAR_depth_image)))
  112.                     print("file number {}".format(int(os.path.basename(CVAR_depth_image)[:6])))
  113.  
  114.                     cvar_line = linecache.getline(root_path+"\\"+"fingertips.txt", int(os.path.basename(CVAR_depth_image)[:6])+1)
  115.                     print(" linnnne is: {}".format(cvar_line))
  116.  
  117.                     cvar_line_split = ' '.join(cvar_line.split(' ')[:]).rstrip()
  118.                     cvar_line_split = cvar_line_split.split(' ')
  119.  
  120.                     #cvar_line = cvar_line.rstrip('\n')
  121.                     #cvar_line_split = cvar_line.split(' ')
  122.                     iterable = iter(cvar_line_split)
  123.                     cvar_sliced = list(iter(lambda: list(itertools.islice(iterable, 3)), []))
  124.                     cvar_sliced_reversed = cvar_sliced[::-1]
  125.                     print("cvar line reversed {}".format(cvar_sliced_reversed))
  126.                     line_split = line_split [1:]
  127.                     list_of_list = []
  128.                     iterable = iter(line_split)
  129.                     openark_sliced = list(iter(lambda: list(itertools.islice(iterable, 3)), []))
  130.                     print("openark sliced is {}".format(openark_sliced))
  131.                     for i in range(len(openark_sliced)):
  132.                         for j in range(len(cvar_sliced_reversed)):
  133.                             if (abs(math.sqrt(pow((float(cvar_sliced_reversed[j][0]) - float(openark_sliced[i][0])),2)
  134.                                 + pow((float(cvar_sliced_reversed[j][1]) - float(openark_sliced[i][1])),2)  ))<10):
  135.                                 per_folder_correct_fingertips_count[dir]+=1
  136.                                 total_correct_fingertips_count+=1
  137.                                 print("per finger count {} of dir {}".format(per_folder_correct_fingertips_count[dir], dir))
  138.                                 print("total fingertips count {}".format(total_correct_fingertips_count))
  139.                 except ValueError:
  140.                     pass
  141.  
  142.         accuracy_file = open(dir+'_accuracy', 'w')
  143.         print("cvar fingertips count is: {}".format(cvar_fingertips_count))
  144.         print(per_folder_correct_fingertips_count)
  145.         print(per_folder_correct_fingertips_count[dir])
  146.         per_finger_accuracy = (per_folder_correct_fingertips_count[dir] / cvar_fingertips_count) * 100
  147.         accuracy_file.write(str(per_finger_accuracy))
  148.         print("per finger accuracy {}".format(per_finger_accuracy))
  149.         accuracy_file.close()
  150.  
  151. accuracy_file = open('accuracy', 'w')
  152. print("total fingertips: {}".format(total_CVAR_fingertips))
  153. print('total correct fingertips {}'.format(total_correct_fingertips_count))
  154. accuracy = (total_correct_fingertips_count/total_CVAR_fingertips) *100
  155. accuracy_file.write(str(accuracy))
  156. print("total accuracy is {}".format(accuracy))
  157. accuracy_file.close()
  158. print("openark line count {}".format(openark_line_count))
  159.  
  160.  
  161. folder = glob.glob("E:\\datasets\\hand\\CVAR\\test\\*")
  162. print(len(folder))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement