图像预处理第9步:存为.bmp文件

//图像预处理第9步:将最终标准化后的字符图像分为单个单个的HDIB保存,并存为.bmp文件
void CChildView::OnImgprcToDibAndSave()
{
    unsigned char* lpSrc;
    int w,h;
    w=m_charRect.front ().Width() ;
    h=m_charRect.front ().Height() ;
    m_dibRect.clear ();
    m_dibRectCopy.clear ();
    int i_src,j_src;
    int i,j;
    int counts=0;
    CRect rect,rectnew;
    BYTE* lpDIB=(BYTE*)::GlobalLock ((HGLOBAL)m_hDIB);
    BYTE* lpDIBBits=(BYTE*)::FindDIBBits ((char*)lpDIB);
    BYTE* lpNewDIBBits;
    BYTE* lpDst;
    LONG lLineBytes=(digicount*w+3)/4*4;
    LONG lLineBytesnew =(w+3)/4*4;
    HDIB hDIB=NULL;
    while(!m_charRect.empty ())
    {
        hDIB=::NewDIB (w,h,8);
        lpDIB=(BYTE*) ::GlobalLock((HGLOBAL)hDIB);
        lpNewDIBBits = (BYTE*)::FindDIBBits((char*)lpDIB);
        lpDst=(BYTE*)lpNewDIBBits;
        memset(lpDst,(BYTE)255,lLineBytesnew * h);
        rect=m_charRect.front ();
        m_charRect.pop_front ();
        for(i=0;i<h;i++)
            for(j=0;j<w;j++)
            {
                i_src=rect.top + i;
                j_src=j+counts*w;
                lpSrc=(BYTE *)lpDIBBits + lLineBytes *  i_src + j_src;
                lpDst=(BYTE *)lpNewDIBBits + lLineBytesnew * i + j;
                *lpDst=*lpSrc;
            }
        ::GlobalUnlock (hDIB);
        m_dibRect.push_back (hDIB);
        counts++;
    }
    m_charRect=m_charRectCopy;
    m_dibRectCopy=m_dibRect;
    //输出为.bmp文件
    CString str;
    counts=1;
    while(!m_dibRect.empty ())
    {
        str.Format ("part%d.bmp",counts);
        //str=strPath+"\\"+str;
           CFile file(str, CFile::modeReadWrite|CFile::modeCreate);
        hDIB=m_dibRect.front ();
        ::SaveDIB (hDIB,file);
        m_dibRect.pop_front ();
        file.Close ();
        counts++;
    }
    m_dibRect=m_dibRectCopy;
}
时间: 2024-08-24 21:02:54

图像预处理第9步:存为.bmp文件的相关文章

图像预处理第8步:紧缩重排数字字符

//图像预处理第8步:紧缩重排已经分割完毕的数字字符,并形成新的位图句柄 void CChildView::OnImgprcShrinkAlign() { m_hDIB=AutoAlign(m_hDIB); //在屏幕上显示位图 CDC* pDC=GetDC(); DisplayDIB(pDC,m_hDIB); DrawFrame(pDC,m_hDIB,m_charRect,1,RGB(252,115,27)); } /**************************************

图像预处理第7步:标准归一化

图像预处理第7步:标准归一化将分割出来的各个不同宽.高的数字字符宽.高统一 //图像预处理第7步:标准归一化 //将分割出来的各个不同宽.高的数字字符宽.高统一 void CChildView::OnImgprcStandarize() { StdDIBbyRect(m_hDIB,w_sample,h_sample); //在屏幕上显示位图 CDC* pDC=GetDC(); DisplayDIB(pDC,m_hDIB); DrawFrame(pDC,m_hDIB,m_charRect,2,RG

c++创建BMP文件并写入数据

参考:http://zhidao.baidu.com/link?url=K0X3GJIiAdhEJ3UheJ8RTcEKrApKn2B6dRkcEpkVspNfebrm345Ltx7_VUJqDs9QYA-0MOTBMBLcOm-h_MD7sa 参考:http://blog.csdn.net/lanbing510/article/details/8176231 最近要看看自己生成的图像,想输出到一个bmp文件. 1.BMP文件概述 BMP(Bitmap-File)图形文件,又叫位图文件,是Win

图像预处理

图像预处理的多个方法: http://blog.csdn.net/u014365862/article/details/51519154 图像预处理方法及实例(应用): http://wenku.baidu.com/link?url=gka7VzVifzcbzRNt1RaPVH_BGZNi5-dm7OlWvxgGBf-A_9m6ljz3xkR8f6oS1rDrLsH646A0f1SnkXXCFqo_L2CTrRCHLF7a65F_heyLOgy 图像归一化的定义和操作: http://blog.

ENVI【遥感图像预处理之图像的几何校正】

---恢复内容开始--- 一.图像几何校正的概述 1.几何校正方法: 1)利用卫星自带的地理定位文件进行几何校正.主菜单>>>Map>>Georeference传感器的名称,来启动这种矫正方法. 2)Image to Image几何校正.一幅图像没有经过几何校正的删个文件或者已经经过几何校正的栅格文件作为基准图,通过两幅图上选择同名点来配准另一幅栅格文件,使相同地物出现在校正后的相同位置,大多数的几何校正都是通过这种方法来完成的. 选择主菜单>>Map>&g

C++保存图像数据至BMP文件

BOOL savebitmap(const BITMAPINFOHEADER* pHeader, const char* data, int nImgW, int nImgH, const char* filename) { BITMAPINFOHEADER bmiHdr; //定义信息头 bmiHdr.biSize = sizeof(BITMAPINFOHEADER); bmiHdr.biWidth = nImgW; bmiHdr.biHeight = nImgH; bmiHdr.biPlan

『TensorFlow』图像预处理_

部分代码单独测试: 这里实践了图像大小调整的代码,值得注意的是格式问题: 输入输出图像时一定要使用uint8编码, 但是数据处理过程中TF会自动把编码方式调整为float32,所以输入时没问题,输出时要手动转换回来!使用numpy.asarray(dtype)或者tf.image.convert_image_dtype(dtype)都行 都行 1 import numpy as np 2 import tensorflow as tf 3 import matplotlib.pyplot as

python+opencv 图像预处理

一 python 生成随机字符串序列+ 写入到图片上 from PIL import Image,ImageDraw,ImageFont import numpy as np import random import string import cv2 # 生成随机字符串 for i in range(1,10000): strnum = random.randint(2,10) ran_str = "".join(random.sample(string.ascii_letters

图解Winhex解析BMP文件数据实例

一 实例解析 示例图片的属性: 原图: 红线处是文件头结束: 第二个红线处是位图信息头结束: 用windows画图取第(2,2)像素点的颜色:画图是从0开始计数,即第3行3列的像素: 搜索16进制的BC542F: 搜到11个: 搜到的数据都靠后:看样子位图数据是倒过来存放的: 对照上面图: 文件头 十六进制值 描 述 42 4D:BM的ASCII值,在Windows中的BMP文件标识符 76 F4 02 00 76 F4 02h=7795714,是文件的大小 - 错误,应该倒过来看: 02 f4