通过qt将二维数组中的像素点显示成一张图片
2013-05-23 14:34
411 查看
从文件42.train读入一个长度为dstSize*dstSize字节数据,存到一个数组psData中,这些数据全部是像素点的值,不包括文件头等辅助信息.通过qt创建一个gui工程,基类选择QWidegt,将图片显示出来。代码如下
#include "widget.h" #include "ui_widget.h" #include <QPainter> #include <cstdio> typedef unsigned short WORD; typedef unsigned char BYTE; typedef unsigned int DWORD; const int dstSize = 128; Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); } Widget::~Widget() { delete ui; } void Widget::paintEvent(QPaintEvent *e) { QPainter paint(this); FILE *pf = NULL; const char * name = "42.train"; DWORD wsize = dstSize * dstSize; BYTE * psData = (BYTE*)malloc(wsize); if( (pf = fopen(name, "rb" )) == NULL ) { printf( "File coulkd not be opened " ); return ; } DWORD *pSrc = (DWORD*)malloc(wsize*sizeof(DWORD)); int n = fread(psData, wsize, 1, pf); if( n== 1) { for (unsigned int i = 0; i < wsize; ++i) { BYTE *pb=(BYTE *)(pSrc+i); pSrc[i] = 0; pb[0] = psData[i]; pb[1] = psData[i]; pb[2] = psData[i]; } free(psData); } QByteArray imageByteArray = QByteArray( (const char*)pSrc, wsize*4 ); uchar* transData = (unsigned char*)imageByteArray.data(); QImage image = QImage(transData, dstSize, dstSize, QImage::Format_RGB32); free(pSrc); fclose(pf); paint.drawImage(QPoint(0, 0), image); paint.end(); }
相关文章推荐
- 文件数据通过qt将二维数组中的像素点显示成一张图片
- Qt中通过控件在Label标签中显示一张静态图片
- 在QT集成开发环境中用OpenCV读取一张图片并显示
- 在QT中通过摄像头动态显示图片
- OpenCV 中读取一张图片的像素点,并显示
- Qt-Quick中设置组件风格、显示一张图片、在一行显示多张图片的方法、绘制图片方法...
- [置顶] OpenGL ES总结(三)OpenGL通过计算纹理坐标来显示一张图片
- QT学习篇(二) 使用QPixmap显示一张图片
- 在QT集成开发环境中用OpenCV读取一张图片显示在Qlabel上
- 使用Qt将一系列图片通过网络发送到客户端动态显示的参考代码(修改一下可以用作远程网络监控)
- qt 通过http获取网络图片并且显示
- Python服务端,通过TCP发送一张图片给Android客户端,客户端把图片显示出来
- Qt中将一张图片剪裁成圆形图显示
- 通过异步任务将一张由网络得来图片显示出来
- 使用Qt将一系列图片通过网络发送到客户端动态显示的参考代码(修改一下可以用作远程网络监控)。
- QT显示图片 .转
- opencv 1.0 显示一张图片
- VC使用IPicture显示网上图片(通过URL指定)
- 利用opencv+QT打开并显示图片
- 利用qt打开一张图片并转成灰度矩阵