radames/Text2Human-API
1
1# -*- coding: utf-8 -*-2 3import numpy as np4from PyQt5.QtCore import *5from PyQt5.QtGui import *6from PyQt5.QtWidgets import *7 8color_list = [9 QColor(0, 0, 0),10 QColor(255, 250, 250),11 QColor(220, 220, 220),12 QColor(250, 235, 215),13 QColor(255, 250, 205),14 QColor(211, 211, 211),15 QColor(70, 130, 180),16 QColor(127, 255, 212),17 QColor(0, 100, 0),18 QColor(50, 205, 50),19 QColor(255, 255, 0),20 QColor(245, 222, 179),21 QColor(255, 140, 0),22 QColor(255, 0, 0),23 QColor(16, 78, 139),24 QColor(144, 238, 144),25 QColor(50, 205, 174),26 QColor(50, 155, 250),27 QColor(160, 140, 88),28 QColor(213, 140, 88),29 QColor(90, 140, 90),30 QColor(185, 210, 205),31 QColor(130, 165, 180),32 QColor(225, 141, 151)33]34 35 36class GraphicsScene(QGraphicsScene):37 38 def __init__(self, mode, size, parent=None):39 QGraphicsScene.__init__(self, parent)40 self.mode = mode41 self.size = size42 self.mouse_clicked = False43 self.prev_pt = None44 45 # self.masked_image = None46 47 # save the points48 self.mask_points = []49 for i in range(len(color_list)):50 self.mask_points.append([])51 52 # save the size of points53 self.size_points = []54 for i in range(len(color_list)):55 self.size_points.append([])56 57 # save the history of edit58 self.history = []59 60 def reset(self):61 # save the points62 self.mask_points = []63 for i in range(len(color_list)):64 self.mask_points.append([])65 # save the size of points66 self.size_points = []67 for i in range(len(color_list)):68 self.size_points.append([])69 # save the history of edit70 self.history = []71 72 self.mode = 073 self.prev_pt = None74 75 def mousePressEvent(self, event):76 self.mouse_clicked = True77 78 def mouseReleaseEvent(self, event):79 self.prev_pt = None80 self.mouse_clicked = False81 82 def mouseMoveEvent(self, event): # drawing83 if self.mouse_clicked:84 if self.prev_pt:85 self.drawMask(self.prev_pt, event.scenePos(),86 color_list[self.mode], self.size)87 pts = {}88 pts['prev'] = (int(self.prev_pt.x()), int(self.prev_pt.y()))89 pts['curr'] = (int(event.scenePos().x()),90 int(event.scenePos().y()))91 92 self.size_points[self.mode].append(self.size)93 self.mask_points[self.mode].append(pts)94 self.history.append(self.mode)95 self.prev_pt = event.scenePos()96 else:97 self.prev_pt = event.scenePos()98 99 def drawMask(self, prev_pt, curr_pt, color, size):100 lineItem = QGraphicsLineItem(QLineF(prev_pt, curr_pt))101 lineItem.setPen(QPen(color, size, Qt.SolidLine)) # rect102 self.addItem(lineItem)103 104 def erase_prev_pt(self):105 self.prev_pt = None106 107 def reset_items(self):108 for i in range(len(self.items())):109 item = self.items()[0]110 self.removeItem(item)111 112 def undo(self):113 if len(self.items()) > 1:114 if len(self.items()) >= 9:115 for i in range(8):116 item = self.items()[0]117 self.removeItem(item)118 if self.history[-1] == self.mode:119 self.mask_points[self.mode].pop()120 self.size_points[self.mode].pop()121 self.history.pop()122 else:123 for i in range(len(self.items()) - 1):124 item = self.items()[0]125 self.removeItem(item)126 if self.history[-1] == self.mode:127 self.mask_points[self.mode].pop()128 self.size_points[self.mode].pop()129 self.history.pop()130 