软件下载 | 资讯教程 | 最近更新 | 下载排行 | 一键转帖 | 发布投稿
您的位置:最火下载站 > 设计在线 > 平面设计 > 利用opencv库来读取jpeg图像文件的数据

利用opencv库来读取jpeg图像文件的数据

烈火建站学院(liehuo.net)图像综合 Jpeg文件的解压缩对于初学者来说是很复杂的,利用intel公司的opencv库,我们可以方便的打开jpeg文件,且很容易获得里面已经处理好的数据。 

具体方法如下:

首先,#include "highgui.h"
                  #include "cv.h"

其中highgui.h文件里面有我们将要使用的cvLoadImage()函数声明

第二步

      声明
               BYTE * lpBmpData;  \\保存图像文件像素数据
               LONG ImageWidth;    \\图像宽度
               LONG ImageHeight;    \\图像高度
               PBITMAPINFO info;   \\文件信息头

第三步

       声明两个引用

       IplImage * temp;
       IplImage * pImg;

       利用temp=cvLoadImage(filename,CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR)读取jpeg文件

        这个函数也支持便携式网络图片 - PNG;
        便携式图像格式 - PBM,PGM,PPM;

第四步

        因为opencv读取的图像数据在windows下面显示可能出现倒置的情况

        所以我们利用cvConvertImage(temp,pImg,CV_CVTIMG_FLIP);

        将图像反转回来

第五步

         现在可以将数据填写进前面声明的变量里了 

            lpBmpData=pImg->imageData;  \\指向排列的图像数据image,而imageDataOrigin; /* 指针指向一个不同的图像数据结构(不是必须排列的),是为了纠正图像内存分配准备的 */

           ImageWidth=pImg->width;
           ImageHeight=pImg->height;

           info->bmiHeader.biPlanes=1;

           info->bmiHeader.biWidth=ImageWidth;

           info->bmiHeader.biHeight=ImageHeight;

           info->bmiHeader.biPlanes=1;

           info->bmiHeader.biCompression = BI_RGB;

           info->bmiHeader.biBitCount=(int)pImg->depth*pImg->nChannels;

           info->bmiHeader.biSize=sizeof(BITMAPINFOHEADER);

         值得注意的是info结构必须填写,因为我们将用到StretchDIBits这个函数

第六步

           我们用StretchDIBits(pDC->GetSafeHdc(), 0,0,ImageWidth,ImageHeight,
     0,0,ImageWidth,ImageHeight, lpBmpData,info, DIB_RGB_COLORS,SRCCOPY);

           显示数据

好了,得到的lpBmpData就可以拿来进行数字图像处理了,简单吧。

    相关阅读
    网友评论
    栏目导航
    推荐软件