在Qt中查看.raw文件

18 篇文章 10 订阅

在Qt中查看.raw文件

Qt中图像类为QImage,而OpenCV对图像操作使用Mat/IplImage,因此,想要在Qt的控件上查看.raw文件需要先将IplImage/Mat转换为QImage

推荐链接:IplImage与QImage之间相互转换的问题

笔者就是参考这个链接,稍加改动,将.raw文件显示到了QLabel中

代码如下:

void MainWindow::showImage()
{
    //文件路径必须这样写,否则会报错
    char *rawFileName = "D://QT//Work//testData//_1000_0_90//1.raw";
    FILE *fp = NULL;
    int ret = 0,width = 1440, height = 1080;

    //为读取16bit raw数据分配空间
    unsigned short *pRawData = (unsigned short *)calloc(width*height, sizeof(unsigned short));
    fp=fopen(rawFileName, "rb");
    ret = fread(pRawData,sizeof(unsigned short)*width*height,1, fp);


    IplImage *pBayerData = cvCreateImage(cvSize(width,height), 16, 1);
    IplImage *pRgbDataInt16 = cvCreateImage(cvSize(width,height),16,3);
    IplImage *pRgbDataInt8 = cvCreateImage(cvSize(width,height),8,3);
    memcpy(pBayerData->imageData, (char *)pRawData, width*height*sizeof(unsigned short));
    cvCvtColor(pBayerData, pRgbDataInt16, COLOR_RGB2BGR);

    //将16bit数据转换为8bit
    cvConvertScale(pRgbDataInt16, pRgbDataInt8, 0.015625, 0);

    QImage image(Ipl_to_QImage(pRgbDataInt8));
    QPixmap pixmap = QPixmap::fromImage(image);
    ui->lab_picture->setPixmap(pixmap);
}

QImage MainWindow::Ipl_to_QImage(const IplImage *iplImg)
{


    int w = iplImg->width;
    int h = iplImg->height;

    QImage qImage(w, h, QImage::Format_RGB32);

    int x, y;
    for(x = 0; x < iplImg->width; ++x)
    {
        for(y = 0; y < iplImg->height; ++y)
        {
            CvScalar color = cvGet2D(iplImg, y, x);

            int r = color.val[2];
            int g = color.val[1];
            int b = color.val[0];

            qImage.setPixel(x, y, qRgb(r,g,b));
        }
    }

    return qImage;
} 
  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值