向图像 OpenCV 添加变暗过滤器

Met*_*lug 0 opencv image-processing

如果已经回答了这样的问题,我提前道歉。我所有关于添加过滤器的搜索都导致了如何添加狗脸。我不确定正确的术语是什么。

手机应用程序(例如 Snapchat 的文本叠加或 android 的二维码程序)使用什么技术来“变暗”图像的一部分?我希望在 OpenCV 中替换此功能。是否可以用其他颜色来做到这一点?(比如加了一个蓝色的口音)

示例:Snapchat 文本叠加

https://i.imgur.com/9NHfiBY.jpg

另一个例子:Google Allo 二维码搜索

https://i.imgur.com/JnMzvWT.jpg

任何问题或意见将不胜感激

Sil*_*key 6

一般: 亮度的变化可以通过加法/减法来实现。如果您想使图像变亮,您可以向图像的每个通道添加特定数量(例如 20)。变暗的另一种方式(减法)。

如果你从图像的每个通道中减去 50,你会得到: 减法 50

要使像素变暗,您还可以使用 Division。这是 1.5 的除法将如何改变图像: 分配

另一种方法是使用指数运算符。此运算符获取每个通道的值,然后计算像素值。然后通过查看最高值,然后通过 255/结果值计算缩放因子,将结果值缩放回 0-255 范围(对于 8 位 RGB)。

如果使用它的值 > 1,它会使图像变暗。这是因为这是一个图表,指数运算符将如何改变每个像素的值。如您所见,大于 1 的运算符值将使图像变暗(意味着通道将向较低值移动),而小于 0 的值会将所有像素向白色移动,从而增加亮度。
电力运营商说明图

这是使用值 0.5 的运算符应用示例图像,这意味着您将每个像素 ^0.5 缩放回 0-255 的范围: 指数运算符 0.5 对于 2 的值,您将获得: 指数运算符 2

遗憾的是,我无法进一步帮助您,因为我不熟悉 OpenCV,但它应该很容易实现自己。

对于您关于着色的问题:是的,这也是可能的。您必须将每个像素的值向相应的颜色移动,而不是向白色移动。我建议通知您有关混合的信息

从这里拍摄的原始图像