2012-03-30 1 views
0

Я работаю с существующей кодовой базой, которая создает CVD images с веб-камеры перед выполнением обработки. Моя цель - запустить обнаружение маркера на этом изображении для расширенной реальности до завершения всей обработки, и я планирую сделать это, используя ArUco. Проблема заключается в том, что ArUco принимает изображение OpenCV для обнаружения маркеров.Преобразование изображения CVD в изображение цвета OpenCV

Я собираюсь вручную создать это изображение OpenCV из изображения CVD, вручную обратившись к каждому пикселю изображения CVD и вставив значения RGB в новое изображение OpenCV. Я не слишком хорошо знаком с работой с C++, но, конечно, есть лучший способ сделать это?

ответ

2

Я использую что-то вроде этого. Тип myImage - это (пользовательский) тип изображения, который хранит 3 байта для каждого пикселя изображения в последовательных байтах памяти, а myImage.data() является указателем на начало этой памяти. Если ваш CVD-образ (который я не знаю) выстроен аналогичным образом, вы можете сделать то же самое.

cv::Mat image(rows, cols, CV_8UC3, myImage.data()); 
+1

Да, вы определенно хотите обернуть изображение, не сделав копию, если это вообще возможно. – aardvarkk

+0

Это похоже на то, что я хочу делать. Согласно документации изображения CVD, я могу разыменовать значение каждого пикселя с помощью оператора [], но я не могу найти, как получить начальный блок памяти для изображения. Из вашего кода выше я угадываю строки = ширина изображения, cols = height и CV_8UC3 - это формат изображения? Есть ли документация для функции выше, поэтому я могу попытаться выяснить, какой формат изображения применим? – Jkh2

+1

посмотрите на opencv.itseez.com для документов и найдите адрес первого элемента с & image [0,0]. CV_8UC3 обозначает unsigned, 8 бит (uchar - стандартный тип изображения), 3 канала (RGB). – Sam

 Смежные вопросы

  • Нет связанных вопросов^_^