photoshop 的HSB如何转换为cv2的HSV?

问题:在ps中调整好HSB后,cv2如何使用HSV复现?

前置知识:

ps 中     H :-180~180    S:  -100~100    B: -100~100 

cv2 中   H  :0~180        S : 0~255          V:0~255

 

解决:(调节HSV参数时发现的规律)

H部分:记a = ps 中的 H // 2,b=180-a。

              则 cv2中 H 小于100的部分 +a ,cv2 中 H 大于100的部分 -b

                举个例子:ps的H=125,则a=62,b=118,H中小于100的部分+62,小于100的部分+118

S部分:(此部分仅猜测,我直接拉满了)

                百分比关系 记 a = ps中的 S / 100,

                则 cv2 中 S 增加 a*S

                举个例子:ps的S=10  cv2 中S=200,则a=0.1 ,增加0.1*200=20,最后等于220

V部分:呈 5 倍 关系,ps 中 V * 5 等于 cv2 中 V

                举个例子:ps中V=10 则cv2 中 设置 V=50

代码部分:

import os,cv2
import matplotlib.pyplot as plt
import numpy as np

def adjust_hue_saturation(img, hue_shift, saturation_shift, lightness_shift):
    hsv_img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

    h, s, v = cv2.split(hsv_img)

    hue_shift = hue_shift//2
    add1 = (h < 100)*(hue_shift)
    add2 = (h > 100)*(180-hue_shift)
    h = h + add1
    h = h - add2
    h = np.clip(h, 0, 180).astype(np.uint8)

    # 这里我直接加了奥
    s = cv2.add(s, saturation_shift)
    s = np.clip(s, 0, 255).astype(np.uint8)

    v = cv2.add(v, lightness_shift * 5)
    v = np.clip(v, 0, 255).astype(np.uint8)

    adjusted_hsv = cv2.merge([h, s, v])

    adjusted_img = cv2.cvtColor(adjusted_hsv, cv2.COLOR_HSV2BGR)

    return adjusted_img

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值