Я должен напечатать полигоны на холсте, но я не знаю, как это сделать. Вершины многоугольников запоминаются в собственных .__ многоугольниках, которые являются массивом, измененным другой функцией. Я пробовал пару методов, но ничего. Я прокомментировал код для объяснения каждой функции.
GG.py
class GG(QObject):
def __init__(self, cameraIntrinsics, floorExtrinsics):
QObject.__init__(self)
self.__polygons = np.array
def modArray(self):
#function that elaborate
#polygon=[[a,b],[c,d],[e,f],[g,h]], where each [x,y]
#contains the coordinate of a vertice of the polygon,
#are the vertices of the polygon,
#and add the latter to
#self.__polygons, that is an array of poligons
def drawPol(self):
#function that draw a polygon on canvas
if __name__ == '__main__':
app = QGuiApplication(sys.argv)
gg = GG()
engine = QQmlApplicationEngine()
engine.rootContext().setContextProperty("gg", gg)
currentPath = os.path.abspath(os.path.dirname(__file__))
qmlPath = os.path.join(currentPath, 'try.qml')
engine.load(QUrl.fromLocalFile(qmlPath))
if not engine.rootObjects():
sys.exit(-1)
sys.exit(app.exec_())
try.qml
import QtMultimedia 5.0
import QtQuick 2.12
import QtQuick.Controls 2.12
import QtQuick.Controls.Material 2.12
import QtQuick.Window 2.12
import QtQml 2.11
import Qt.labs.folderlistmodel 2.1
import QtQuick.Dialogs 1.3
import QtQml.StateMachine 1.0 as DSM
import QtCharts 2.13
ApplicationWindow {
title: "window"
visible: true
id: window
width:940
height:510
Rectangle {
id: imgVisualizer
anchors.left: window.left; anchors.top: window.top
color: "transparent"
width:610
height:510
Image {
id: img
anchors.fill: parent
source: "file:///input.png"
}
Canvas {
id: drawingCanvas
anchors.fill: parent
onPaint: {
var ctx = getContext("2d")
ctx.setTransform()
ctx.lineWidth = 5;
ctx.strokeStyle = "red"
//print each edge of the polygon
ctx.beginPath()
ctx.moveTo(a, b)
ctx.lineTo(c, d)
ctx.lineTo(e, f)
ctx.lineTo(g, h)
ctx.stroke()
}
}
}