如何通过cimg获取rgb值?
CImg<unsigned char> src("image.jpg");
int width = src.width();
int height = src.height();
unsigned char* ptr = src.data(10,10);
如何从 ptr
获取 rgb
?
CImg<unsigned char> src("image.jpg");
int width = src.width();
int height = src.height();
unsigned char* ptr = src.data(10,10);
How can I get rgb
from ptr
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
在 Ubuntu 10.04 上测试,使用手工制作的 3x3 RGB 图像保存为
test.png
:源文件
cimg_test.cpp
:编译并运行:
它可以工作。
Tested on Ubuntu 10.04 with a handmade 3x3 RGB image saved as
test.png
:Source file
cimg_test.cpp
:Compile and run:
It works.
来自CImg 文档 - 第 34 页第 6.13 节和第 120 页第 8.1.4.16 节-- 看起来
data
方法可以采用四个参数:x、y、z 和 c:...其中
c
指的是颜色通道。我猜测,如果您的图像确实是 RGB 图像,那么对c
使用 0、1 或 2 的值将为您提供给定处的红色、绿色和蓝色分量x, y 位置。
例如:(
但这只是一个猜测!)
编辑:
CImg 似乎还有一个以类似方式工作的operator():
From the CImg documentation -- section 6.13 on page 34, and section 8.1.4.16 on page 120 -- it looks like the
data
method can take four arguments: x, y, z, and c:...where
c
refers to the color channel. I'm guessing that if your image is indeed an RGB image, then using values of 0, 1, or 2 forc
will give you the red, green, and blue components at a givenx, y
location.For example:
(But this is just a guess!)
Edit:
It looks like there's also an operator() for CImg that works in a similar manner:
访问数据的最简单方法是使用
()
运算符:您可能会感到困惑,因为 CImg 以非交错方式存储原始数据。即您的原始数据存储为
R1, R2, ..., G1, G2, ..., B1, B2, ...
而不是R1, G1, B1, R2, G2 ,B2,...
参见:http://cimg.eu/reference/group__cimg__storage.html.data()
仅返回一个指针,因此要像上面那样直接访问数据,您可以执行以下操作:The easiest way to access data is with the
()
operator:You are probably hitting confusion because CImg stores the raw data non-interleaved. i.e. your raw data is stored
R1, R2, ..., G1, G2, ..., B1, B2, ...
instead ofR1, G1, B1, R2, G2, B2, ...
see: http://cimg.eu/reference/group__cimg__storage.html.data()
just returns a pointer, so to access the data directly as above you would do:@wamp:我不知道 CImg 但 RGB 中的灰度图像有:
R = G = B
和 CMYK 中:
C = M = Y = 0
K = 亮度
所以你甚至不需要一个函数......
@wamp: I don't know about CImg but grayscale images in RGB have:
R = G = B
and in CMYK:
C = M = Y = 0
K = luminance
So you don't even need a function for that...