1
3
I threw this together
对于这个问题(在文章底部链接了c项目的zip文件)。它不使用
|
2
3
我最终放弃了
QColorMatrix
到C并使用其
|
3
2
你见过吗? this article 关于代码项目? 从一个公认的快速浏览页面,它看起来像4D数学。你可以采用与二维或三维数学相似的方法来构造矩阵。 取一系列的源“点”——在本例中,您需要4个点——以及相应的目标“点”,并生成一个矩阵。这可以应用于任何“点”。 在2D中做这件事(从记忆中,这样我就可以在这件事上大喊大叫了): 震源点是(1,0)和(0,1)。目标是(0,-1)和(1,0)。你需要的矩阵是:
其中,额外信息用于坐标的“w”值。 把这个扩展到r,g,b,a,w,你会得到一个矩阵。选择4种颜色:红色(1、0、0、0、W)、绿色(0、1、0、0、W)、蓝色(0、0、1、0、W)和透明色(0、0、0、1、W)。找出它们在新方案中所对应的颜色,并按如下方式建立矩阵:
注: 当矩阵乘法是不可交换的时,多重复制的顺序(向量*矩阵或矩阵*向量)将决定转换的点是垂直还是水平地进入这个矩阵。我假设向量矩阵。 |
4
1
这是一个古老的问题,但发布的解决方案比我找到的简单答案要复杂得多。 简单的:
重申问题:我们需要什么?我准备了一些红色的图标。有些区域是透明的,有些或多或少是饱和的,但它们都有红色。我认为它与您的用例非常匹配。图像可能有其他颜色,它们将被旋转。
如何表示要应用的色调?最简单的答案是:供应
致力于解决问题
显然,当颜色是红色时,转换应该是同一性的。 当颜色为绿色时,转换应将红色映射为绿色,绿色映射为蓝色,蓝色映射为红色。 执行此操作的颜色矩阵是:
数学解“aha”技巧是认识到矩阵的实际形式是
其中R、G和B只是着色颜色的组成部分! 样例代码我以上的示例代码为例 https://code.msdn.microsoft.com/ColorMatrix-Image-Filters-f6ed20ae . 我调整了它,并在我的项目中实际使用它:
希望这有帮助。 局限性
|
5
1
以下代码构造
我的见解是,在色调空间的60度偏移时:
实际上是RGB空间中的45度偏移:
所以你可以把120度位移的一部分转化成90度位移的一部分。
这个
例如,为了应用60度换档:
你呼叫:
实施 :
|
6
0
我想那是 www.aforgenet.com 可以帮助 |
7
0
我构建了一个用C语言实现@ianboid代码的方法。
|