使用 Photoshop 脚本选择对象

Posted

技术标签:

【中文标题】使用 Photoshop 脚本选择对象【英文标题】:Object Selection with Photoshop scripting 【发布时间】:2021-04-12 19:53:06 【问题描述】:

我需要能够在大量图像中自动选择人物。我知道它们的坐标、宽度和高度,但理想情况下更喜欢有一个更人性化的选择,而且通过界面的普通对象选择似乎效果很好。现在我想知道我是否可以使用 Photoshop 脚本来做到这一点?任何线索表示赞赏!

澄清一下,我说的是最近推出的对象选择工具here。

谢谢大家!

【问题讨论】:

这将需要大量的后端代码,并且很可能需要一些机器学习/人工智能算法。做前端非常困难,但不是不可能。你最好的运气是搜索某种 API 来为你做这件事并返回一个结果。 啊我的意思是触发对象选择工具?我已经选择了人类,尽管是在一个矩形边界框中。所以我想知道我是否可以使用相同的坐标触发对象选择工具? 抱歉,我无法提供帮助 - 我在这里没有足够的经验。 没问题!我仍然很感激你的cmets。非常感谢! 【参考方案1】:

我设法让这个工作。如果有人感兴趣:

假设边界框的坐标(上、左、下、右)都找到了。

var idset = stringIDToTypeID( "set" );
var desc4 = new ActionDescriptor();
var idnull = stringIDToTypeID( "null" );

var ref3 = new ActionReference();
var idchannel = stringIDToTypeID( "channel" );
var idselection = stringIDToTypeID( "selection" );
ref3.putProperty( idchannel, idselection );
desc4.putReference( idnull, ref3 );

var idto = stringIDToTypeID( "to" );
    var desc5 = new ActionDescriptor();
    var idtop = stringIDToTypeID( "top" );
    var idpixelsUnit = stringIDToTypeID( "pixelsUnit" );
    desc5.putUnitDouble( idtop, idpixelsUnit, top );
    var idleft = stringIDToTypeID( "left" );
    var idpixelsUnit = stringIDToTypeID( "pixelsUnit" );
    desc5.putUnitDouble( idleft, idpixelsUnit, left );
    var idbottom = stringIDToTypeID( "bottom" );
    var idpixelsUnit = stringIDToTypeID( "pixelsUnit" );
    desc5.putUnitDouble( idbottom, idpixelsUnit, bottom );
    var idright = stringIDToTypeID( "right" );
    var idpixelsUnit = stringIDToTypeID( "pixelsUnit" );
    desc5.putUnitDouble( idright, idpixelsUnit, right );
    
var idrectangle = stringIDToTypeID( "rectangle" );
desc4.putObject( idto, idrectangle, desc5 );
var iddeepSelect = stringIDToTypeID( "deepSelect" );
desc4.putBoolean( iddeepSelect, true );
var idobjectSelectionMode = stringIDToTypeID( "objectSelectionMode" );
desc4.putInteger( idobjectSelectionMode, 0 );
var idmagicLassoAutoEnhance = stringIDToTypeID( "magicLassoAutoEnhance" );
desc4.putBoolean( idmagicLassoAutoEnhance, true );
var idsmartSubtract = stringIDToTypeID( "smartSubtract" );
desc4.putBoolean( idsmartSubtract, true );
executeAction( idset, desc4, DialogModes.NO );

这些代码可以通过ScriptingListener获取(here可用)

【讨论】:

以上是关于使用 Photoshop 脚本选择对象的主要内容,如果未能解决你的问题,请参考以下文章

Photoshop 脚本指南

在 Photoshop 脚本中,如何循环每个选择并在每次迭代期间应用渐变效果?

Photoshop脚本开发环境

用Photoshop软件实现批量压缩照片

Photoshop脚本学习之路-链接集合

Serif Affinity Photo 1.9.0安装破解激活教程