def draw(self): fig = visualizeData( self._position_data, [graph.points for graph in self._clusters] + [self._nodes_left], reduce(add, [graph.edges for graph in self._clusters]), True) fig.canvas.draw() data = np.fromstring(fig.canvas.tostring_rgb(), dtype=np.uint8, sep='') data = data.reshape(fig.canvas.get_width_height()[::-1] + (3, )) cv2.imshow('win', data) cv2.waitKey(10) plt.close(fig)
def draw(self, saveFile=None, drawEdges=True, time=10): fig = visualizeData(self._position_data, [graph.points for graph in self._clusters] + [self._nodes_left], reduce(add, [graph.edges for graph in self._clusters]), True, drawEdges=drawEdges) fig.canvas.draw() data = np.fromstring(fig.canvas.tostring_rgb(), dtype=np.uint8, sep='') data = data.reshape(fig.canvas.get_width_height()[::-1] + (3, )) if saveFile is not None: cv2.imwrite(saveFile, data) cv2.imshow('win', data) cv2.waitKey(time) plt.close(fig)
from Code.Graph import Graph from Code.Data.DistanceMatrix import getDistanceMatrix from Code.Data.LoadData import readData from Code.drawGraph import visualizeData from functools import reduce from operator import add position_data = readData(path="../objects.data") matrix = getDistanceMatrix(position_data) all_nodes = len(position_data) g = Graph(list(range(all_nodes)), matrix) edges_cut = [] # cutting max edges for i in range(9): edges_cut.append(g.get_max_edge()) g.remove_edge([edges_cut[i]]) print(g.compute_edges_length()) graphs = [] visualizeData(position_data, [g.points], g.edges) # building clusters from disconnected graphs for i in range(10): points = g.get_first_connected_subgraph() g.removePoints(points) graphs.append(Graph(points, matrix)) visualizeData(position_data, [graphs[i].points], graphs[i].edges) visualizeData(position_data, [graph.points for graph in graphs], reduce(add, [graph.edges for graph in graphs]))
def visualize(self, position_data): visualizeData(position_data, [graph.points for graph in self._clusters], reduce(add, [graph.edges for graph in self._clusters]))