Idu*_*ool 9 iphone opencv core-graphics image-processing objective-c
我正在努力用用户选择的颜色替换图像中的某些颜色.我正在使用OpenCV进行颜色替换.
总之,我已经描述了从哪里获得帮助以及我得到了什么.
如何更改图像中的特定颜色? 我已经按照上面的链接回答了步骤或采取了基本的想法.在那个链接的正确答案中,那个人告诉你只需要改变色调来替换颜色.
在那之后我遇到类似像iphone应用程序的图像中的颜色替换的问题
(即,这是完全初学者的颜色替换的好代码)
从那个问题我得到了我还需要改变"饱和度"的想法.
现在我遇到了类似的问题
"当我的源图像太亮(即高亮度)并且我用一些深色替换颜色时,颜色在替换图像中看起来很亮而不是暗,因为看起来替换颜色与使用我们完成的颜色不匹配替换"
这是因为我没有考虑更换亮度.在这里,我被困在改变亮度的公式或想法是什么?
假设我用目标颜色的亮度替换图像的亮度然后看起来像平坦的替换物,图像将失去它的实际阴影或边缘.
编辑:
当我在更换时考虑光源的亮度(即要处理的像素)时,我面临一个问题.让我按照我的应用场景解释一下.
例如我正在改变汽车的颜色(如whiteAngl解释)之后,我正在擦除新颜色汽车的一小部分.我再次对擦除的部分进行重新着色,但现在发生的事情是擦除后的颜色和擦除之前的颜色不匹配,因为两次我都得到不同的亮度,因为我的处理像素都被改变了,并且由于它的亮度颜色在输出中改变了.如何克服这个问题
任何帮助将不胜感激

fir*_*ant 10
如果没有看到你尝试过的代码,就不容易猜出你做错了什么.为了向您展示如何完成这项工作,让我们改变这款车的丑陋蓝色:

这个简短的python脚本显示了我们如何使用HSV颜色空间更改颜色:
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)
Run Code Online (Sandbox Code Playgroud)
你得到:

在维基百科上,您会看到色调介于0到360度之间,但对于OpenCV中的值,请参阅文档.你看,我在图像中的每个像素的色调中添加了100.我想你想要改变你图像的一部分颜色,但是你可能从上面的脚本中得到了想法.
以下是如何获得所需的暗红色汽车.首先我们得到红色的:

我试图保持金属感的深红色:

正如我所说,用于移动颜色光的等式取决于您想要对象的材质.在这里,我提出了一个快速而肮脏的方程式来保持汽车的金属材料.此脚本从第一个浅蓝色汽车图像生成上面的深红色汽车图像:
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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1594 次 |
| 最近记录: |