铸造厂NUKE中的色差

用户名

所以我试图用Python代码直接制作一个绘画节点组,以便可以在将来的项目中使用它,但是我似乎无法从该色差公式中获得该公式的强大功能(我也是Nuke的新功能,所以如果有更好的书写方式,请让我知道,谢谢,或者如果我完全做错了,也请通知我)

下面的色差公式用于创建差异图像:|(r1,g1,b1)–(r2,g2,b2)| =((r1-r2)^ 2 +(g1-g2)^ 2 +(b1-b2)^ 2)^ 1/2。

nRedShuffle = nuke.nodes.Shuffle()
nRedShuffle['red'].setValue('red')
nRedShuffle['green'].setValue('red')
nRedShuffle['blue'].setValue('red')
nRedShuffle['alpha'].setValue('red')

nGreenShuffle = nuke.nodes.Shuffle()
nGreenShuffle['red'].setValue('green')
nGreenShuffle['green'].setValue('green')
nGreenShuffle['blue'].setValue('green')
nGreenShuffle['alpha'].setValue('green')

#...(so on for the rest of rgba1 and rgba2)

nGreenShuffle2 = nuke.nodes.Shuffle()
nGreenShuffle2['red'].setValue('green')
nGreenShuffle2['green'].setValue('green')
nGreenShuffle2['blue'].setValue('green')
nGreenShuffle2['alpha'].setValue('green')

nBlueShuffle2 = nuke.nodes.Shuffle()
nBlueShuffle2['red'].setValue('blue')
nBlueShuffle2['green'].setValue('blue')
nBlueShuffle2['blue'].setValue('blue')
nBlueShuffle2['alpha'].setValue('blue')

#I am having troubles with the powers below

redDiff = nuke.nodes.Merge2(operation='minus', inputs=[nRedShuffle2, nRedShuffle])
redDiffMuli = nuke.nodes.Merge2(operation='multiply', inputs=[redDiff, redDiff])

greenDiff = nuke.nodes.Merge2(operation='minus', inputs=[nGreenShuffle2, nGreenShuffle])
greenDiffMuli = nuke.nodes.Merge2(operation='multiply', inputs=[greenDiff, greenDiff])

blueDiff = nuke.nodes.Merge2(operation='minus', inputs=[nBlueShuffle2, nBlueShuffle])
blueDiffMuli = nuke.nodes.Merge2(operation='multiply', inputs=[blueDiff, blueDiff])

redGreenAdd = nuke.nodes.Merge2(operation='plus', inputs=[redDiffMuli, greenDiffMuli]) 
redGreenBlueAdd =  nuke.nodes.Merge2(operation='plus', inputs=[redGreenAdd, blueDiffMuli]) 
安迪·费多罗夫(Andy Fedoroff)

这是Color Difference为两个图像实施公式的至少两种方法您可以difference在合并节点中使用op,也可以在字段中为MergeExpression节点内部的每个通道编写公式

在此处输入图片说明

每个通道的表达就这么简单:

abs(Ar-Br)
abs(Ag-Bg)
abs(Ab-Bb)

在此处输入图片说明

Python命令

您可以使用.nodes.MergeExpression方法:

import nuke

merge = nuke.nodes.MergeExpression(expr0='abs(Ar-Br)', 
                                   expr1='abs(Ag-Bg)', 
                                   expr2='abs(Ab-Bb)')

或常规.createNode语法:

merge = nuke.createNode('MergeExpression')

merge['expr0'].setValue('abs(Ar-Br)')
merge['expr1'].setValue('abs(Ag-Bg)')
merge['expr2'].setValue('abs(Ab-Bb)')

完整代码版本

import nuke
import nukescripts

red = nuke.createNode("Constant")
red['color'].setValue([1,0,0,1])

merge = nuke.createNode('MergeExpression')
merge['expr0'].setValue('abs(Ar-Br)')
merge['expr1'].setValue('abs(Ag-Bg)')
merge['expr2'].setValue('abs(Ab-Bb)')

yellow = nuke.createNode("Constant")
yellow['color'].setValue([1,1,0,1])

merge.connectInput(0, yellow)
nuke.toNode('MergeExpression1').setSelected(True)

nukescripts.connect_selected_to_viewer(0)

# Auto-alignment in Node Graph
for everyNode in nuke.allNodes():
    everyNode.autoplace()

考虑!MergeExpression这个节点比常规Merge(difference)节点慢得多

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

discord.py中的Nuke命令

来自分类Dev

通用铸造

来自分类Dev

铸造工会

来自分类Dev

c中的双重铸造

来自分类Dev

将Cython中的C结构包装/铸造为Python类

来自分类Dev

Nuke中的Python多处理导致Nuke挂起

来自分类Dev

OpenCV中颜色差异的简单指标?

来自分类Dev

当前在炼厂CMS(3.0.0)中登录的用户?

来自分类Dev

UINavigationBar色调颜色与IOS中其余应用程序之间的颜色差异

来自分类Dev

如何使用Python API在Nuke中添加群组旋钮

来自分类Dev

铸造和仿制药,使连接列表中的Java 8

来自分类Dev

如何编写自定义Java中铸造方法

来自分类Dev

在Nuke中翻转OpenEXR RgbaOutputFile

来自分类Dev

了解manifest.yml关键云铸造厂中的以下环境条目

来自分类Dev

如何从铸造厂的融合工作表创建数据集?

来自分类Dev

如何将数据集转换为存储库中的字典。我在铸造厂内使用pyspark

来自分类Dev

有铸造厂的官方CLI吗?

来自分类Dev

discord.py中的Nuke命令

来自分类Dev

如何在Palantir铸造厂中上传未经身份验证的数据集

来自分类Dev

在Python类中使用self(在Nuke中创建GUI)

来自分类Dev

在Clojure中铸造零

来自分类Dev

applescript在终端中渲染nuke脚本

来自分类Dev

当前在炼厂CMS(3.0.0)中登录的用户?

来自分类Dev

关键云铸造厂-Java Scheduled Jobs

来自分类Dev

va_arg中的铸造方式

来自分类Dev

在负载中铸造与在单独的步骤中铸造

来自分类Dev

如何在 Nuke 中读取 DTEX 文件格式?

来自分类Dev

如何添加到 HashMap 中的铸造列表?

来自分类Dev

从铸造类中获取原始类