LINUX.ORG.RU

OpenCV: putText для YUV420

 


0

1

Доброго дня!
Перед сжатием захваченного буфера (YUV420) мне необходимо добавить в него некоторую текстовую информацию.

try {
    _img[0] = new cv::Mat(encop.picHeight, encop.picWidth, CV_8UC1,
					reinterpret_cast<unsigned >(_src_mem.virt_uaddr));
    _img[1] = new cv::Mat(encop.picHeight / 2, encop.picWidth / 2, CV_8UC1,
					reinterpret_cast<unsigned *>(_src_mem.virt_uaddr +
											_size));
    _img[2] = new cv::Mat(encop.picHeight / 2, encop.picWidth / 2, CV_8UC1,
					reinterpret_cast<unsigned *>(_src_mem.virt_uaddr +
											_size + _size / 4));
} catch (std::bad_alloc &e) {
	daemon_error("Failed allocate memory for OpenCV data!");
}

putText(*_img[0], _osd, cv::Point(20, 20), cv::FONT_HERSHEY_SIMPLEX,
		0.5, cvScalar(6.0, 249.0, 223.0), 0, 16);
putText(*_img[1], _osd, cv::Point(10, 10), cv::FONT_HERSHEY_SIMPLEX,
		0.25, cvScalar(6.0, 249.0, 223.0), 0, 16);
putText(*_img[2], _osd, cv::Point(10, 10), cv::FONT_HERSHEY_SIMPLEX,
		0.25, cvScalar(6.0, 249.0, 223.0), 0, 16);
Код работает, но:

  • выводимый текст имеет другой цвет
  • выводимый текст выглядит не чётким"

Собственно вопросы:

  • как возможно упростить код если OpenCV умеет работать с YUV
  • как возможно решить описанные проблемы если OpenCV не умеет работать с YUV

Спасибо.

★★

выводимый текст имеет другой цвет

По коду ты пытаешься выводить цветные пиксели в монохромные изображения. Как минимум нужно перевести требуемый цвет в YCbCr.

выводимый текст выглядит не чётким"

Может это связано с уполовиненным разрешением цветоразностных каналов? Может код пишет три или четыре байта там, где должен писать один?

i-rinat ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.