I don’t see a problem with color. the pictures look identical to me.
if you see a difference, please point it out. provide pictures that have the same exact size.
also: yes VLC and ffmpeg use different decoders, AND they may have to guess the color space of the video (if it’s not said in the video’s metadata). and if those color spaces are different, the result will look slightly different.
I have faced this problem before and it had two possible causes: different codec used by VLC versus OpenCV, or because VLC somehow “normalizes” the image before display. Exact problem was not clear to me.