gpt4 book ai didi

c - 在 C 中使用无符号字符进行数据表示

转载 作者:太空宇宙 更新时间:2023-11-04 08:55:17 25 4
gpt4 key购买 nike

这里有一个我没有完全理解但想完全理解的函数:

/**
* Returns: the label of a vertex in the given image at location (x, y).
* 0 = unlabeled vertex at location (x, y)
* 1 = background label at location (x, y)
* 2 = object/foreground label at location (x, y)
*/
int getLabelAtVertexXY(IplImage* image, int x, int y) {
uchar* data = (uchar*) image->imageData + y * image->widthStep + 3 * x;
if (data[2] < 128 && data[1] < 128)
return 0;
else if (data[1] > data[2])
return 1; // TODO: data[1] holds probability in background starting at 128-255?
else
return 2;
}

这是我得到的:图像的每个像素都被标记为 0、1 或 2。这些信息是如何存储在 unsigned char 指针 data 中的>?

我意识到 unsigned char 可以表示从 0 到 255 的数字,但是 unsigned char 的哪一部分做 data[1]取回?

最佳答案

要了解信息的存储方式,您需要实现 IplImage。

data实际上是一个指向unsigned char的指针。没有人说它只有 1 个字符。它可以是字符数组。所以 data[1] 是数组中的第二个元素。

此外,根据我的说法,+ 运算符不会对数字求和,它会求和指针地址。

关于c - 在 C 中使用无符号字符进行数据表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17458221/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com