Displaying Grayscale Image

It could be helpful for you to provide more info. See here for guide: Read Me: How to ask a question on the forum, and FAQs

I’m not clear from your post what board/PYNQ version/design you are using. Are you using the standard base Overlay, or did you modify it?

The color format allows you to set the color format of the HDMI input stream. E.g. if you want to use RGB, BGR etc. in your design you can select it here. This operation will cost quite a lot of cycles in software, but can be easily done in hardware.

The pixel pack sets a data width. Again, sometimes you might want 32 bit, sometimes 24 bit. 8-bit sets grayscale. Again this would cost CPU cycles to do this in software, but transferring 32 bit or 24 bit data to CPU to then convert to 8-bit grayscale would also use some memory bandwidth. This may matter if are passing a lot more data back and forth between PS/PL in other parts of your design.

There are versions of both these IP on the input, and output. You can convert the input, process, then convert it back to what you need on output.

More info on this here:
https://pynq.readthedocs.io/en/v2.5/pynq_libraries/video.html

If you convert to grayscale on the input, you can’t then output a colour signal without regenerating it in software somehow.
You are probably setting 8 bit grayscale on input, then setting a colour space on the output. The 8-bit grayscale is probably being copied to blue channel, with no data for red, green. Try set the output to grayscale. (You could also try copy the grayscale to the red and green channels. It should give the same effect, but this would be wasteful.)

Cathal