在 C++ 中使用 CImg 相乘和相加图像
中的以下函数中找到 C,
我试图在 CImg C=B*L+(1-B)S
其中C、L 和 S 都是相同大小的 RGB 图像(B 是单通道灰度遮罩)
我不知道如何循环像素。我见过这样的代码:
cimg_forXYZ(S,x,y,z) {... }
但我以前从未见过这种语法,它可能是一个宏吗?
欢迎任何建议。
I am trying to find C in the following function in CImg
C=B*L+(1-B)S
Where C, L and S are all RGB images of the same size (and B is a single channel grayscale matte)
I cannot figure out how to loop over the pixels. I've seen code like:
cimg_forXYZ(S,x,y,z) {... }
But I have never see than kind of syntax before, could it be a macro?
Any suggestions are welcome.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果你查看 CImg 标头,你会发现该代码实际上是一个宏,它会分解为:
这意味着你将有以下循环:
所以,现在,你可能想做的是引用x、y 和 z 坐标,或者更好的是,当您单步执行时指向数据的指针,就像
我鼓励您阅读 CImg 标头一样;非常优雅。您将“免费”获得很多功能。
If you look into the CImg header, you'll see that that code is, in fact, a macro that thunks down into:
Which means that you will have the following loops:
So, now, what you probably want to do is reference either the x, y, and z coordinates, or better, the pointer into the data as you step through, like
I encourage you to read the CImg header; it's quite elegant. You'll get a lot of functionality 'for free'.