这是一个我不完全理解但我想完全理解的功能:
/**
* 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
?
我意识到 anunsigned char
可以表示从 0 到 255 的数字,但检索的部分是unsigned char
什么?data[1]