2011-07-10 165 views
2

我一直在尋找這樣的答案。如何將QPixmap轉換爲矩陣

我的QPixmap 轉化()發現這個方法雖然我認爲它不會幫助我在我的追求搜索到的圖像(灰階)轉換的QPixmap成矩陣的方法...

感謝幫助=)

+0

Matrix是什麼意思?在Qt或標準C++ AFAIK中沒有這樣的類。 – Mat

+0

對不起:我把這個矩陣作爲一個多維數組,可以用於統計目的(如生物識別等) – Rek

回答

4

QMatrixQPixmap::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; 

您可以輕鬆地更改矩陣變量到一些其他的佈局在內存中,如果你喜歡。

+0

我喜歡你的答案,這是優雅的。我將使用它來進行反向操作:從矩陣創建QImage(QVector ) – dlewin