Iphone 缺少一点,即当目标颜色为暗时,更改色调/仅/不会使像素按需要变暗。您刚刚编辑了答案,为亮度添加了偏移;但是,偏移可能会导致负值或对比度变差(无论如何,这不是调整对象亮度的正确方法)。您还手动更改了偏移量,但没有考虑要匹配的/所需/颜色(我如何知道所需颜色的

Iphone 缺少一点,即当目标颜色为暗时,更改色调/仅/不会使像素按需要变暗。您刚刚编辑了答案,为亮度添加了偏移;但是,偏移可能会导致负值或对比度变差(无论如何,这不是调整对象亮度的正确方法)。您还手动更改了偏移量,但没有考虑要匹配的/所需/颜色(我如何知道所需颜色的,iphone,objective-c,opencv,image-processing,core-graphics,Iphone,Objective C,Opencv,Image Processing,Core Graphics,缺少一点,即当目标颜色为暗时,更改色调/仅/不会使像素按需要变暗。您刚刚编辑了答案,为亮度添加了偏移;但是,偏移可能会导致负值或对比度变差(无论如何,这不是调整对象亮度的正确方法)。您还手动更改了偏移量,但没有考虑要匹配的/所需/颜色(我如何知道所需颜色的亮度比所需颜色暗80?)好吧,为了证明我的方法有效,我添加了输出图像,您清楚地看到,“偏移量可能导致负值或对比度降低”是不正确的。因为我不是简单地添加偏移量!关于你的第二个问题,对于一个给定的像素,如果用户输入所需的颜色H/L,那么你只需与像素


缺少一点,即当目标颜色为暗时,更改色调/仅/不会使像素按需要变暗。您刚刚编辑了答案,为亮度添加了偏移;但是,偏移可能会导致负值或对比度变差(无论如何,这不是调整对象亮度的正确方法)。您还手动更改了偏移量,但没有考虑要匹配的/所需/颜色(我如何知道所需颜色的亮度比所需颜色暗80?)好吧,为了证明我的方法有效,我添加了输出图像,您清楚地看到,“偏移量可能导致负值或对比度降低”是不正确的。因为我不是简单地添加偏移量!关于你的第二个问题,对于一个给定的像素,如果用户输入所需的颜色H/L,那么你只需与像素的当前H/L进行比较,瞧,你就有了区别。请看我更新的问题,我添加了我对该解决方案的关注
import cv2
orig = cv2.imread("original.jpg")
hsv = cv2.cvtColor(orig, cv2.COLOR_BGR2HSV)
hsv[:,:,0] += 100
bgr = cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR)
cv2.imwrite('changed.jpg', bgr)
import cv2
orig = cv2.imread("original.jpg")
hls = cv2.cvtColor(orig, cv2.COLOR_BGR2HLS)
hls[:,:,0] += 80 # change color from blue to red, hue
for i in range(1,50): # 50 times reduce lightness 
 # select indices where lightness is greater than 0 (black) and less than very bright 
 # 220-i*2 is there to reduce lightness of bright pixel fewer number of times (than 50 times), 
 # so in the first iteration we don't reduce lightness of pixels which have lightness >= 200, in the second iteration we don't touch pixels with lightness >= 198 and so on
 ind = (hls[:,:,1] > 0) & (hls[:,:,1] < (220-i*2))
 # from the lightness of the selected pixels we subtract 1, using trick true=1 false=0
 # so the selected pixels get darker
 hls[:,:,1] -= ind
bgr = cv2.cvtColor(hls, cv2.COLOR_HLS2BGR)
cv2.imwrite('changed.jpg', bgr)