PyQt 在更改图片亮度的基础上更改饱和度的方法

该代码实现了在不丢失之前调整效果的情况下,分别调整图像亮度和饱和度的功能。通过flag变量记录亮度和饱和度是否已调整,以及使用imageTemp保存中间结果。调整亮度和饱和度时,先将图像转换为HSV空间,然后相应地修改V通道(亮度)或HS通道(饱和度),最后转换回RGB空间并显示结果。
摘要由CSDN通过智能技术生成

实现亮度调整和饱和度调整的方法,都是通过对原图进行修改得到的。

如果不做处理,在调整亮度之后,再进行调整饱和度,显示的结果只有饱和度的调整,没有保留上一步亮度的调整

处理办法:

通过添加flag变量作为标识位,用来标识亮度(饱和度)是否被更改。

添加imageTemp变量,保存亮度(饱和度)属性被更改后,改变后的图片,作为下一步调整的原图

    def BaoHeDu(self,value):
        print('调整饱和度{}'.format(value))
        if value == 0:
            value = 1
        if self.flag1 == 1:
            hsv_image = cv2.cvtColor(self.pic_imageTemp, cv2.COLOR_RGB2HSV)
        else:
            hsv_image = cv2.cvtColor(self.pic_image0,cv2.COLOR_BGR2HSV)#####
        h, s, v = cv2.split(hsv_image)
        v = np.clip(v + value - 50, 0, 250)
        hsv_image = cv2.merge((h, s, v))
        self.pic_image = cv2.cvtColor(hsv_image, cv2.COLOR_HSV2RGB)
        if value != 50:
            self.pic_imageTemp1 = self.pic_image
            self.flag2 = 1
        else:
            self.flag2 = 0
        self.show_pic()
    def LiangDu(self,value):
        print("调整亮度")
        if value == 0:
            value = 1
        contrast = value / 50.0  # float类型
        if self.flag2 == 1:
            self.pic_imageTemp = cv2.cvtColor(self.pic_imageTemp1, cv2.COLOR_RGB2BGR)
            tmp_image = np.float32(self.pic_imageTemp) * contrast
            #print(tmp_image)
        else:
            tmp_image = np.float32(self.pic_image0) * contrast
        tmp_image = np.clip(tmp_image, 0, 255)
        self.pic_image = np.uint8(tmp_image)
        self.pic_image = cv2.cvtColor(self.pic_image, cv2.COLOR_BGR2RGB)
        # print(value)
        if value != 50:
            self.pic_imageTemp = self.pic_image
            self.flag1 = 1
        else:
            self.flag1 = 0
        self.show_pic()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值