首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PyQt:获取QPolygon内部的所有像素

PyQt:获取QPolygon内部的所有像素
EN

Stack Overflow用户
提问于 2018-08-09 05:56:59
回答 1查看 135关注 0票数 0

在PyQt 5中,是否有一种方法可以获得所有像素位置,这些像素位置都是通过对QPainter.drawPolygon的调用来修改的,该对象是以某个QImage作为参数构造的,而没有实际绘制多边形?理想情况下,我希望为多边形的边界和多边形内的所有像素获取独立的像素位置集。

EN

回答 1

Stack Overflow用户

发布于 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是否包含这一点。实现细节不多,但请考虑下面的代码片段。

代码语言:javascript
复制
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()方法来获取每个像素的坐标。

代码语言:javascript
复制
for point in array_qpoints:
   x = point.x()
   y = point.y()
   # do what you want with the information

我正在为访问这个问题并通过代码寻找解决方案的其他人发布这个答案。既然已经好几年了,如果你找到了更好的解决方案,请贴:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51759738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档