Duro Coat makes vinyl dye in a spray can. If you clean your carpet and put it in the syn for as long as it takes to get perfectly dry, this will work. I used it only on a black carpet, so I'll only attest for the black color.
First fluff up the carpet with a stiff bristle brush and vacuum it, fluff it up again. Lay it in the hot sun and start spraying from one end to the other, wait a few (15 minutes) then spray on another coat top to bottom. Mine hid all the sun bleached areas in two coats this way and it came out looking new. (Remember the carpet was black). My carpets of course were of vinyl material not cotton or wool some foreign cars have. The secret is to get ALL the duat and dirt cleaned and vacuumed, and get the carpet perfectly dry. I might add the sun also disinfected it while drying out for a day in the sum. I had great results doing it this way, simple, easy.
Gerry