这是我第一次来这里。
我目前正在尝试通过遍历所有像素并对那里的颜色做些事情来编写用于后期处理图像的类。
我的想法是添加posterize()
或rgbSplit()
等方法。初始化它们时,每种效果都不会遍历所有像素,因为效果不是很好。我希望它存储这样一个事实,即当我使用称为process()
的方法时,它应在给定的链中处理这些影响。
但是因此,我必须将对效果代码的引用存储在一个列表中(例如矢量),对吗?因为这样我可以进入x和y坐标的for
循环,并在其中添加另一个for循环,该循环遍历了应该应用于像素的所有方法。
问题是,我不知道如何将方法存储在向量中。那有可能吗?还是矢量仅用于对象?还是我可以以某种方式“客观化”一种方法?还是我现在要做的是什么?
这个问题非常广泛。但我知道您才刚刚起步,需要在编写一些代码之前先知道是否有可能。
所以这里是一个简短的低级答案:
std::function
的向量,它比原始函数指针更强大和灵活; std::function
,或使用command pattern实现经典方法) operator()
)。 但是在更高的层次上,您需要更好地考虑您的设计:
因此,您的设计需要同时处理两种算法。例如,您可以首先将链中的初步像素变换应用于所有像素,然后仅在已变换像素的组上运行算法,然后在链中继续进行。
一旦您考虑了这一点,并开始使用上述想法之一实施解决方案,您可能会回到这里,遇到一些更精确的问题,并用一些代码进行说明。