Во-первых, вы должны знать, что ваш вопрос плохо сформулирован. Никто не собирается писать вам образец кода. Вы можете использовать поисковую систему (или даже искать этот сайт) для преобразования кода из RGB в YUV.
Я написал ответ, похожий на то, что вы ищете here. Он преобразуется из RGB в YIQ, делает некоторое смещение оттенка и преобразует обратно. Вы можете использовать матрицу Y'CbCr для преобразования цвета вместо YIQ, если это то, что вам нужно.
Это не преобразование вниз в 4: 2: 0. Однако это должно быть достаточно легко сделать. Как только он находится в формате Y'CbCr, вы можете сжать соответствующие каналы по своему усмотрению. Я рекомендую сначала выполнить фильтр нижних частот на этом канале, чтобы избежать артефактов сглаживания.
Я не работаю с Linux, поэтому не тестировал Ubuntu. Удачи.