当前位置 : 主页 > 网络编程 > 其它编程 >

image打开rgb16qt_Qt下的RGB24与QImage等的对等转换|学步园

来源:互联网 收集:自由互联 发布时间:2023-07-02
收藏几个有用的网站内容是关于RGB24的问题unsignedintconvertYUVtoRGB(inty,intu,intv){intr,g,b;ry(int)( 收藏几个有用的网站内容是关于RGB24的问题 unsigned int convertYUVtoRGB(int y, int u, int v) { int r,g,b; r y
收藏几个有用的网站内容是关于RGB24的问题unsignedintconvertYUVtoRGB(inty,intu,intv){intr,g,b;ry(int)(

收藏几个有用的网站内容是关于RGB24的问题

unsigned int convertYUVtoRGB(int y, int u, int v) {

int r,g,b;

r y (int)(1.402f*v);

g y - (int)(0.344f*u 0.714f*v);

b y (int)(1.772f*u);

r r>255? 255 : r<0 ? 0 : r;

g g>255? 255 : g<0 ? 0 : g;

b b>255? 255 : b<0 ? 0 : b;

return 0xff000000 | (b<<16) | (g<<8) | r;

}

unsigned int * convertYUV420_NV21toRGB8888(unsigned char data[78080], int width, int height) {

int size width*height;

int offset size;

unsigned int * pixels new unsigned int[size];

int u, v, y1, y2, y3, y4;

// i percorre os Y and the final pixels

// k percorre os pixles U e V

for(int i0, k0; i

y1 data[i ]

y2 data[i1]

y3 data[widthi ]

y4 data[widthi1]

u data[offsetk ]

v data[offsetk1]

u u-128;

v v-128;

pixels[i ] convertYUVtoRGB(y1, u, v);

pixels[i1] convertYUVtoRGB(y2, u, v);

pixels[widthi ] convertYUVtoRGB(y3, u, v);

pixels[widthi1] convertYUVtoRGB(y4, u, v);

if (i!0 2)%width0)

iwidth;

}

return pixels;

}

int main(int argc, char *argv[])

{

QApplication a(argc, argv);

unsigned char * buffer;

unsigned int * image NULL;

QPixmap pixmap;

QImage img(352, 288, QImage::Format_ARGB32_Premultiplied);

img.fill(QColor(Qt::white).rgb());

ofstream outfile ("debug.txt",ofstream::binary);

ifstream is;

is.open ("sample00.yuv", ios::binary );

// is.seekg (0, ios::end);

// length is.tellg();

// is.seekg (0, ios::beg);

buffer new unsigned char[101376];

is.read((char * )buffer,101376);

is.close();

for(int x0; x<101376; x)

{

outfile.write((char*)buffer x, 1);

}

outfile.close();

/*

for (int x 0; x <10; x) {

for (int y 0; y <10; y) {

img.setPixel(x, y, qRgb(0, 0, 0));

}

}

*/

for(int i 0; i <101376; i)

qDebug() <

image convertYUV420_NV21toRGB8888(buffer,352,288);

QByteArray byteImage((const char *)image);

pixmap.loadFromData(byteImage);

QLabel myLabel;

myLabel.setPixmap(pixmap);

myLabel.setGeometry(20,100,320,122);

myLabel.show();

return a.exec();

}

还有一段例子

/* pDistImage new QImage(w, h, 32) */

void RGB2Image(char *srcBuf, int w, int h, QImage *pDistImage)

{

int i;

int r, g, b;

QRgb *point;

uchar *bit;

i 0;

bit (uchar *)(srcBuf);

for(int y 0; y

for ( int x 0; x

/* Please attion the Littile-Edian and Big-Edian,

* The Order maybe R-G-B.

*/

b (int)bit[i];

g (int)bit[i1];

r (int)bit[i2];

point (QRgb *)pDistImage->scanLine(y) x;

*point qRgb(r, g, b);

i 3;

}

}

return 0;

}

网友评论