как конвертировать значения пикселей для отображения изображения в opencv - PullRequest
0 голосов
/ 20 июля 2011

Я не могу обработать значения пикселей (unsigned int) для преобразования в изображение.Я хочу синтаксис, который преобразует значение пикселя в формат изображения.cvset (все типы команд) не работает, я получаю только определенное цветное изображение, как будто только красное или только зеленое и т. Д. Пожалуйста, помогите мне с синтаксисом для восстановления значений пикселей в изображение.Я могу преобразовать изображение в пиксели, но не могу преобразовать изображение обратно из тех же значений пикселей.

1 Ответ

2 голосов
/ 21 июля 2011

Сколько каналов в изображении вы работаете? Это важная информация. Имейте в виду, что изображения в градациях серого обычно имеют 1 канал, а цветные изображения, загружаемые OpenCV, обычно имеют 3 канала (R, G и B).

Для работы с 3-канальным изображением в C, вы можете сделать:

IplImage* pRGBImg = cvLoadImage("img.png", CV_LOAD_IMAGE_UNCHANGED); 
int width = pRGBImg->width; 
int height = pRGBImg->height;
int bpp = pRGBImg->nChannels; 

for (int i=0; i < width*height*bpp; i+=bpp) 
{

  pRGBImg->imageData[i] = r; // RED pixel
  pRGBImg->imageData[i+1] = g; // GREEN
  pRGBImg->imageData[i+2] = b; // BLUE 
}

Для одноканальных изображений ядро ​​цикла будет намного проще, так как вам нужно будет работать только на img->imageData[i].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...