獲取原始數據我有一個QImage的,我從一個像素圖類似以下內置:從QImage的
QPixmap fullPmap = topItem->pixmap();
fullPmap = fullPmap.copy(isec.toRect());
QImage chip = fullPmap.toImage();
這基本上是用在屏幕上的矩形相交的圖像剪裁到缺口的大小。
我現在需要從芯片獲取表示該數據的字符數組。
我該怎麼做?
我想是這樣的:
unsigned char * data = chip.bits();
當我顯示「數據」我得到一個完全扭曲的形象,一點也不像我的實際芯片。
fullPmap是一個RGB圖像,如果重要的話。我有我使用的將其轉換爲灰度一些代碼:
QRgb col;
int gray;
for (int i = 0; i < chip.width(); ++i)
{
for (int j = 0; j < chip.height(); ++j)
{
col = chip.pixel(i, j);
gray = qGray(col);
chip.setPixel(i, j, qRgb(gray, gray, gray));
}
}
我不很喜歡,但它似乎喜歡做這樣的事情的最簡便方法。
顯示的是從位返回的數據()看起來是這樣的:
imwidth = chip.width();
imheight = chip.height();
QImage *qi = new QImage(imwidth, imheight, QImage::Format_RGB32);
// #pragma omp parallel for
for (int i = 0 ; i < imheight ; i++)
for (int j = 0 ; j < imwidth ; j++)
{
qi->setPixel(j,i,qRgb(data[i*imwidth + j],data[i*imwidth + j],data[i*imwidth + j]));
}
由於它看起來像雪 - 沒有像原始芯片 – Derek 2011-04-27 21:55:58
你如何「顯示」從bits()返回的數據? – 2011-04-27 22:22:33
編輯添加顯示代碼。但是,這不完全是我想要對數據做的事情......我正在嘗試將數據發送到第三方函數,該函數將使用數據作爲輸入並返回一個不同的unsigned char *數組,我知道如何顯示數據。 – Derek 2011-04-27 23:06:05