Conversor RGB para YUV
Separe uma cor RGB em brilho e duas diferenças de cor: o laranja 255, 128, 0 dá Y 0.5936509804, U −0.2921263922 e V 0.3564952157 com os pesos BT.601. Útil para conferir contas de vídeo e de processamento de imagem. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- Resistência (Ω)
- 255
- G
- 128
- B
- 0
- Y
- 0,5936509804
- U
- -0,2921263922
- Tensão (V)
- 0,3564952157
- Forma padrão
- BT.601
Este conversor de RGB para YUV transforma canais inteiros vermelho, verde e azul em luminância e crominância Y′UV analógicas usando pesos BT.601 fixos. Informe cada canal entre 0 e 255 para receber componentes Y, U e V normalizados com arredondamento decimal estável. O cálculo é determinístico e local: não acessa a rede, não usa aleatoriedade, não consulta o relógio nem corrige dados inválidos silenciosamente.
Entenda o resultado YUV analógico
RGB descreve uma cor pela intensidade dos canais vermelho, verde e azul. O Y′UV analógico reorganiza esses sinais em um componente semelhante à luminância e dois componentes de diferença de cor. O campo y atribui maior influência ao verde, depois ao vermelho e ao azul, conforme os coeficientes BT.601 0.299, 0.587 e 0.114.
Os campos u e v carregam crominância: U representa principalmente a diferença do azul e V a diferença do vermelho. Antes da matriz, cada inteiro é dividido por 255, deixando R, G e B entre zero e um. Y fica entre zero e um; U vai aproximadamente de -0.436 a 0.436 e V de -0.615 a 0.615.
Cinzas neutros geram crominância praticamente nula. A resposta repete os canais validados, fornece os componentes arredondados e identifica o padrão e a faixa. O resultado é Y′UV analógico normalizado, não YCbCr digital com deslocamentos como 16 e 128.
Essa distinção é importante ao comparar codecs, bibliotecas de imagem ou tabelas de transmissão que usam informalmente o nome YUV para valores YCbCr.
Validação e cálculo reproduzível
Forneça r, g e b como inteiros de 0 a 255 inclusive. Strings numéricas com sinal opcional são analisadas depois da remoção dos espaços externos; frações, notação científica, vazios, booleanos, arrays, objetos, Infinity e NaN são rejeitados. Todo número aceito precisa continuar inteiro e dentro da faixa. 256 e -1 não são recortados, pois isso esconderia pixels corrompidos, escalas erradas ou esquemas incompatíveis.
Após a validação, cada canal é dividido por 255. Y usa 0.299R + 0.587G + 0.114B, U usa -0.14713R - 0.28886G + 0.436B e V usa 0.615R - 0.51499G - 0.10001B. Os resultados são arredondados para dez casas e o zero negativo vira zero.
Não há rede, estado persistente, sorteio, configuração regional nem data.
Use corretamente em fluxos de mídia
Este conversor ajuda a estudar modelos de cor de televisão, verificar fórmulas gráficas, separar brilho de diferenças cromáticas e criar exemplos reproduzíveis de processamento de sinais. Especialistas em mídia podem observar como as primárias distribuem energia entre Y, U e V antes de abordar subamostragem. Mantenha a convenção junto ao valor: a saída utiliza sinais RGB não lineares normalizados e uma matriz Y′UV no estilo BT.601.
Ela não adiciona offsets digitais, não quantiza códigos de vídeo limitados, não subamostra crominância, não lineariza sRGB, não converte primárias nem codifica vídeo. Muitos programas chamam YCbCr de YUV, portanto os números podem divergir. Confirme se o outro sistema espera YCbCr digital completo ou de estúdio, inteiros ou frações normalizadas e qual matriz emprega.
Casos de uso
Ensinar luminância e crominância
Demonstre como as primárias RGB contribuem de modo diferente para a luminância e os dois eixos cromáticos com sinal.
Validar entradas de mídia
Rejeite canais de 8 bits malformados ou fora da faixa antes de uma conversão determinística de RGB para YUV.
Perguntas frequentes
O resultado é YUV analógico ou YCbCr digital?
É Y′UV analógico normalizado com pesos fixos derivados de BT.601. Não há offsets digitais nem códigos de vídeo de faixa limitada.
Qual faixa de entrada é aceita?
Cada canal r, g e b deve ser um inteiro de 0 a 255 inclusive.
Por que U e V podem ser negativos?
U e V são sinais de diferença de cor centrados no cinza neutro. O sinal indica a direção nos eixos de diferença azul e vermelha.
O conversor limita canais inválidos?
Não. Isso ocultaria erros de origem; qualquer canal menor que 0 ou maior que 255 retorna um erro.
O que o cinza, o preto e o branco geram?
Qualquer cinza neutro tem U e V iguais a zero, porque os três canais são iguais. O preto fica em zero, zero, zero, e o branco em Y igual a um, sem crominância.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/color/rgb-yuv \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"r":255,"g":128,"b":0}'const res = await fetch("https://api.kit.forhosting.com/color/rgb-yuv", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"r": 255,
"g": 128,
"b": 0
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/color/rgb-yuv",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"r": 255,
"g": 128,
"b": 0
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/color/rgb-yuv", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"r":255,"g":128,"b":0}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"r":255,"g":128,"b":0}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/color/rgb-yuv", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"r": 255,
"g": 128,
"b": 0
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "color.rgb_yuv",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
Valores fora da faixa retornam invalid_input em vez de serem limitados. Você pode usar a ferramenta grátis no navegador ou chamar a API por US$ 0,002 por item válido.
Validação e cálculo reproduzível
Os aliases red, green e blue, além de R, G e B, também são aceitos para integrar formulários e tabelas sem renomear colunas. Coeficientes, ordem e arredondamento fixos tornam o JSON reproduzível. Falhas aparecem como invalid_input e identificam o canal quando possível.
Use corretamente em fluxos de mídia
No navegador, a mesma lógica pura funciona gratuitamente; pela API, cada item válido custa US$ 0,002. Como canais inválidos são rejeitados, o endpoint também serve como limite rigoroso antes de um pipeline de cores.
Casos de integração
Criar fixtures de conversão
Gere trios YUV analógicos BT.601 estáveis para testes unitários, arquivos golden e verificações entre linguagens.
Perguntas técnicas
Quanto custa o conversor de RGB para YUV?
Você pode executá-lo grátis no navegador. Uma conversão válida pela API custa US$ 0,002; entradas inválidas são rejeitadas.