如何在C中读取图像的RGB通道?

时间:2012-11-16 17:09:50

标签: c cuda

我正在使用pycuda来计算图像像素的强度。为此,我已将图像发送到GPU,如下所示。

 img = np.float32(np.array(img.imread('my_image.jpg')))
 img_gpu = gpuarray.to_gpu(img)

然后,在内核中(当然用c编写),我想得到如下的RGB值(伪代码)。

__global__ void get_intensities(float* img, float* intensities) {
    intensities[globalIndex] = R(x, y) + G(x, y) + B(x, y)
}

我现在的一个大问题是在C中获取RGB通道。我该怎么做?

1 个答案:

答案 0 :(得分:1)

虽然这最终取决于图像的存储方式,但我会在这种情况下利用结构。例如:

image = np.uint8(np.array(img.imread('my_image.jpg')))
img_gpu = gpuarray.to_gpu(image)

__global__ void intensity(uchar3* img, int* intensities)
{
    ...
    intensities[globalIndex] = img[globalIndex].x + img[globalIndex].y + img[globalIndex].z;
    ...
}

请参阅http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#built-in-vector-types