我一直在使用CImg生成一些图像,但我发现了一种奇怪的语法,我不知道它叫什么。它允许你做这样的事情:
cimg_forXYC(image, x, y, z){
// I can set things about the image here
image(x, y, z) = 100.;
}
我之前从未遇到过这种奇怪的用户定义的自定义风格函数。它叫什么,它是如何创造的?
答案 0 :(得分:0)
cimg_forXYC
是一个macro,它大致取代for
循环,用于循环图像维度:
cimg_forXYC(img,x,y,v) : equivalent to : cimg_forC(img,v) cimg_forXY(img,x,y)
和
cimg_forC(img,v) : equivalent to : for (int v = 0; v<img.spectrum(); v++)
cimg_forXY(img,x,y) : equivalent to : cimg_forY(img,y) cimg_forX(img,x)
最后
cimg_forX(img,x) : equivalent to : for (int x = 0; x<img.width(); x++)
如果您check the documentation,您会看到所有细节。
您的image.operator()(int, int, int)
会返回一个引用,因此您可以按照自己的方式使用它。