Mentions légales du service

Skip to content
Snippets Groups Projects
Commit 1af02d36 authored by MOEBEL Emmanuel's avatar MOEBEL Emmanuel
Browse files

GUI annotation: now object lists can also be saves as excel files

parent a3eb2450
No related branches found
No related tags found
No related merge requests found
......@@ -5,6 +5,7 @@
# License: GPL v3.0. See <https://www.gnu.org/licenses/>
# =============================================================================================
import os
import numpy as np
import warnings
......@@ -62,6 +63,42 @@ def disp(objlIN):
print(strout)
def read(filename):
"""Reads object list. Handles .xml and .xlsx files, according to what extension the file has.
Args:
filename (str): '/path/to/file.ext' with '.ext' either '.xml' or '.xlsx'
Returns:
list of dict
"""
data_format = os.path.splitext(filename)
if data_format[1] == '.xml':
objl = read_xml(filename)
elif data_format[1] == '.xlsx':
objl = read_excel(filename)
else:
print('/!\ DeepFinder can only read object lists in .xml and .xlsx formats')
return objl
def write(objl, filename):
"""Writes object list. Can write .xml and .xlsx files, according to the extension specified in filename.
Args:
objl (list of dict)
filename (str): '/path/to/file.ext' with '.ext' either '.xml' or '.xlsx'
"""
data_format = os.path.splitext(filename)
if data_format[1] == '.xml':
write_xml(objl, filename)
elif data_format[1] == '.xlsx':
write_excel(objl, filename)
else:
print('/!\ DeepFinder can only write object lists in .xml and .xlsx formats')
def read_xml(filename):
tree = etree.parse(filename)
objl_xml = tree.getroot()
......
......@@ -208,7 +208,7 @@ class AnnotationWindow(QtWidgets.QMainWindow, Ui_MainWindow):
self.winDisp.dwidget.goto_coord(coord) # to refresh lmap display
# Test:
ol.disp(self.objl)
#ol.disp(self.objl)
def on_object_remove_secure(self):
......@@ -288,9 +288,10 @@ class AnnotationWindow(QtWidgets.QMainWindow, Ui_MainWindow):
filename = filename[0]
else:
filename = self.path_objl
s = os.path.splitext(filename)
filename = s[0]+'.xml' # force extension to be xml
ol.write_xml(self.objl, filename)
#s = os.path.splitext(filename)
#filename = s[0]+'.xml' # force extension to be xml
#ol.write_xml(self.objl, filename)
ol.write(self.objl, filename)
message = 'Object list saved! Quit?'
reply = QtGui.QMessageBox.question(self, 'Quit?', message,
......@@ -305,7 +306,7 @@ class AnnotationWindow(QtWidgets.QMainWindow, Ui_MainWindow):
else:
path_objl = ('', '')
if len(self.objl)!=0:
message = 'This will overwrite current object list. Proceed?'
message = 'This will overwrite current object list. Proceed?' # TODO: DOES NOT OVERWRITE OBJL!!
reply = QtGui.QMessageBox.question(self, 'Remove class', message,
QtGui.QMessageBox.Yes | QtGui.QMessageBox.No)
if reply == QtGui.QMessageBox.Yes:
......@@ -320,7 +321,8 @@ class AnnotationWindow(QtWidgets.QMainWindow, Ui_MainWindow):
def load_objl(self, path_objl):
objl = ol.read_xml(path_objl)
#objl = ol.read_xml(path_objl)
objl = ol.read(path_objl)
self.label_list = ol.get_labels(objl)
for idx in range(len(objl)):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment