I'm trying to convert a greyscale image to a Hsv image, but with the S and V channels set to a preset value. The following code works but takes ~400ms to execute.
public void ToHueImage(this Image<Gray, double> image, Image<Hsv, double> output)
{
for (int i = 0; i < image.Width; i++)
{
for (int j = 0; j < image.Height; j++)
{
output.Data[j, i, 0] = image.Data[j, i, 0];
output.Data[j, i, 1] = 255;
output.Data[j, i, 2] = 255;
}
}
}
}
I would like to be able to assign a single greyscale image channel to each of the H, S, and V planes in a single operation to avoid copying the pixels across individually, something along the lines of
public void ToHueImage(this Image<Gray, double> image, Image<Hsv, double> output)
{
output.Data.H = image;
output.Data.S = WHITE_IMAGE; // These are static
output.Data.V = WHITE_IMAGE; // These are static
}
without resorting to byte copying etc. I'm trying to get the execution time to ~30ms or so. Is there any straightforward way to accomplish this?