在PyQt 5中,是否有一种方法可以获得所有像素位置,这些像素位置都是通过对QPainter.drawPolygon的调用来修改的,该对象是以某个QImage作为参数构造的,而没有实际绘制多边形?理想情况下,我希望为多边形的边界和多边形内的所有像素获取独立的像素位置集。
发布于 2022-11-15 20:10:02
正如@ekhumoro所说,QPolygon是QVector (即QList)的子类。然而,在Pyqt this is a Python array and not a QList中。当我试图迭代这个列表时,我得到了运行时错误,因为它在QPolygon对象中,并且没有getter。在这种情况下,在PyQt中,解决方案不是很有效。您需要迭代图像的每个像素,创建一个具有像素坐标的QPoint,并通过containsPoint方法检查QPolygon是否包含这一点。实现细节不多,但请考虑下面的代码片段。
array_qpoints = [] # this array will have all the QPoints
polygon = QPolygon([
QPoint(140,234),
QPoint(126,362),
QPoint(282,409),
QPoint(307,273),
QPoint(307,233),
])
# let's consider a 640x480 image
for x in range(640):
for y in range(480):
point = QPoint(x, y)
if polygon.containsPoint(point, Qt.FillRule.OddEvenFill):
array_qpoints.append(point)您可以通过为array_qpoints中的每个元素调用x()和y()方法来获取每个像素的坐标。
for point in array_qpoints:
x = point.x()
y = point.y()
# do what you want with the information我正在为访问这个问题并通过代码寻找解决方案的其他人发布这个答案。既然已经好几年了,如果你找到了更好的解决方案,请贴:)
https://stackoverflow.com/questions/51759738
复制相似问题