欢迎访问宙启技术站
智能推送

PyQt5.QtGui.QImage实现图像的颜色调整与滤镜效果

发布时间:2024-01-13 06:27:00

PyQt5是一个用于创建图形用户界面的Python库。它提供了许多功能强大的类和方法来创建交互式应用程序。PyQt5.QtGui.QImage是PyQt5中的一个类,用于处理图像数据。可以使用它来实现图像的颜色调整和滤镜效果。

以下是一个使用PyQt5.QtGui.QImage实现图像的颜色调整和滤镜效果的例子:

from PyQt5.QtGui import QImage, QColor, qRgb

def adjust_brightness(image, factor):
    """
    调整图像亮度的函数
    :param image: 需要调整的图像
    :param factor: 亮度调整因子,0表示完全黑暗,1表示原图像
    :return: 调整后的图像
    """
    for x in range(image.width()):
        for y in range(image.height()):
            # 获取当前像素的颜色
            color = QColor(image.pixel(x, y))
            # 计算新的亮度值
            new_brightness = color.lightnessF() * factor
            # 根据新的亮度值创建新的颜色
            new_color = QColor.fromHslF(color.hueF(), color.saturationF(), new_brightness)
            # 设置新的颜色到图像中
            image.setPixel(x, y, new_color.rgb())

    return image

def apply_filter(image, filter_type):
    """
    应用滤镜效果的函数
    :param image: 需要应用滤镜效果的图像
    :param filter_type: 滤镜类型,可以是"grayscale"或"invert"
    :return: 应用滤镜后的图像
    """
    for x in range(image.width()):
        for y in range(image.height()):
            # 获取当前像素的颜色
            color = QColor(image.pixel(x, y))

            if filter_type == "grayscale":
                # 计算灰度值
                gray = (color.redF() + color.greenF() + color.blueF()) / 3
                # 创建新的颜色
                new_color = QColor.fromRgbF(gray, gray, gray)
            elif filter_type == "invert":
                # 计算反色值
                new_color = QColor.fromRgbF(1 - color.redF(), 1 - color.greenF(), 1 - color.blueF())

            # 设置新的颜色到图像中
            image.setPixel(x, y, new_color.rgb())

    return image


# 使用例子

# 加载图像
image = QImage("image.jpg")

# 调整亮度
brightened_image = adjust_brightness(image, 1.2)

# 应用滤镜
grayscale_image = apply_filter(image, "grayscale")
inverted_image = apply_filter(image, "invert")

# 保存图像
brightened_image.save("brightened_image.jpg")
grayscale_image.save("grayscale_image.jpg")
inverted_image.save("inverted_image.jpg")

在上面的例子中,我们首先定义了一个调整图像亮度的函数adjust_brightness()和一个应用滤镜效果的函数apply_filter()。这两个函数都接受一个图像和相应的参数,并返回处理后的图像。

在使用例子中,我们首先加载了一个图像"image.jpg"。然后分别调用adjust_brightness()函数和apply_filter()函数来调整图像亮度和应用滤镜效果。最后,我们将处理后的图像保存为"brightened_image.jpg"、"grayscale_image.jpg"和"inverted_image.jpg"。

这个例子展示了如何使用PyQt5.QtGui.QImage类来实现图像的颜色调整和滤镜效果。你可以根据自己的需求来定义不同的调整函数和滤镜函数,以实现更多种类的图像处理效果。