如何将QImage裁剪到不透明区域?

时间:2012-08-09 16:03:35

标签: qt crop pyside bounding-box qimage

如果我有带alpha通道的QImage,如何创建一个裁剪到不透明区域的边界框的新QImage?

2 个答案:

答案 0 :(得分:1)

我找到了另一个SO答案(用C ++编写):

Does Qt have a way to find bounding box of an image?

def bbox(p):
    bounding-box-of-an-image
    l = p.width()
    t = p.height()
    r = 0
    b = 0

    for y in range(p.height()):
        rowFilled = False
        for x in range(p.width()):
            if qAlpha(p.pixel(x, y)):
                rowFilled = True
                r = max(r, x)
                if l > x:
                    l = x
        if rowFilled:
            t = min(t, y)
            b = y
    return QRect(QPoint(l, t), QPoint(r, b))

但如果有更好/更快的方法可以做到这一点会很棒。

答案 1 :(得分:1)

您要实现的是图像处理的一部分。这不是QImage中的标准操作。您必须遍历像素并计算边界框。 我建议你使用cv libs因为它们适合这种操作。