Как преобразовать QPixmap в матрицу

Я искал такие ответы.

Я нашел этот метод в QPixmap transformed(), хотя я думаю, что он не поможет мне в поиске метода преобразования изображений QPixmap (оттенки серого) в матрицу...

Спасибо за помощь =)


person Rek    schedule 10.07.2011    source источник
comment
Что вы имеете в виду под матрицей? В Qt или в стандартном С++ AFAIK такого класса нет.   -  person Mat    schedule 10.07.2011
comment
Извините: я называю эту матрицу многомерным массивом, который можно использовать для статистических целей (например, биометрии и т. д.).   -  person Rek    schedule 10.07.2011


Ответы (1)


QMatrix в функции QPixmap::transformed() специально предназначен для деформации изображений.

Я думаю, что вы хотите сделать, это прочитать значения из QPixmap в некоторую матрицу. Вы не указываете, что означает оттенки серого, но я предполагаю, что qGray(QRgb) достаточно, если изображение еще не в оттенках серого.

Я думаю, что в основном что-то вроде этого вам нужно:

QImage myimage = mypixmap.toImage();    // convert your QPixmap to QImage
int width = myimage.width();
int height = myimage.height();
int *matrix = new int [width*height];   // store 2-D data in 1-D vector

for(int j = 0; j < height; j++)
{
  for(int i = 0; i < width; i++)
  {
    matrix[j*width+i] = qGray(myimage.pixel(i,j));
  }
}

// ... do stuff ...

delete [] matrix;

Вы можете легко изменить матричную переменную на какой-либо другой макет в памяти, если хотите.

person koan    schedule 10.07.2011
comment
Мне нравится твой элегантный ответ. Я собираюсь использовать его для обратной операции: создание QImage из матрицы (QVector‹QRgb›) - person dlewin; 22.05.2017