如果可能,我想创建框(正方形)以使用PyQt突出显示图像中的小对象。我已使用Pixmap将图像设置在标签中。我的目标是单击一个按钮(使用QtDesigner创建),然后“打开”将在图像上显示的框。
我希望将其分配给该按钮的按钮名为pushButtonToggle。我还希望获得单击该按钮时的功能,以将图标从“关闭”开关的图标更改为“开启”开关的图标。我已经使用Qt Designer中的图标完成了所有UI工作,但是我不知道如何使“关闭”图标“激活”并切换到“开启”图标图像。但是我当前面临的最重要的问题是,在尝试创建这些框时不知道从哪里开始。我得到了一个CSV文件,每个框都有一个x,y,w和h。以下是示例坐标:x = 4.636915409564971924e + 02,y = 3.457265897989273071e + 02,w = 5.272114515304565430e + 01,h = 4.602192258834838867e + 01,我将从给定的CSV文件中提取该信息。
下面是我认为可能相关的代码片段,但我真的觉得我是从头开始创建盒子,除了使用opencv之外,我在网上找不到太多帮助。尽管我知道在这种情况下这可能是一条更简单的方法,但我希望在可能的情况下使用PyQt,希望能帮助我入门。
Util.py
class MockupApp(QtWidgets.QMainWindow,mockup1.Ui_MainWindow):
def __init__(self):
super(MockupApp, self).__init__()
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
self.pixmap = QPixmap("/Users/PythonPrograms/photo.jpeg")
self.ui.label.setPixmap(self.pixmap)
self.ui.label.setScaledContents(True)
self.populateTable()
def populateTable(self):
_translate = QtCore.QCoreApplication.translate
data = np.loadtxt('/Users/PythonPrograms/file.csv', delimiter=',')
classes = data[:,4]
unique, counts = np.unique(classes, return_counts=True)
num_zero = counts[0]
num_one = counts[1]
num_two = counts[2]
print(unique, counts)
self.ui.tableWidgetName.item(0, 0).setText(_translate("MainWindow", str(int(num_zero/len(classes)*100)) + '%'))
self.ui.tableWidgetName.item(1, 0).setText(_translate("MainWindow", str(int(num_one/len(classes)*100))+'%'))
self.ui.tableWidgetName.item(2, 0).setText(_translate("MainWindow", str(int(num_two/len(classes)*100)) + '%'))
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
MockUp = MockupApp()
MockUp.show()
sys.exit(app.exec_())
Ui.py
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 480)
self.pushButtonToggle = QtWidgets.QPushButton(self.verticalLayoutWidget_6)
self.pushButtonToggle.setAutoFillBackground(False)
self.pushButtonToggle.setText("")
icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap(":/icons/turnoff.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
icon.addPixmap(QtGui.QPixmap(":/icons/turnon.png"), QtGui.QIcon.Normal, QtGui.QIcon.On)
self.pushButtonToggle.setIcon(icon)
self.pushButtonToggle.setIconSize(QtCore.QSize(55, 40))
self.pushButtonToggle.setFlat(True)
self.pushButtonToggle.setObjectName("pushButtonToggle")
self.horizontalLayout_4.addWidget(self.pushButtonToggle)