• 大小: 3.5MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-11-04
  • 语言: 其他
  • 标签: 畸变  

资源简介

各类畸变caj文件,如:大视场广角物镜畸变的实时数字校正.caj,广角镜头图像畸变校正系统的研究.caj,光学图象几何畸变的快速校正算法.caj==

资源截图

代码片段和文件信息




#include “stdafx.h“
#include “dib.h“

IMPLEMENT_DYNAMIC(CDib  Cobject)

CDib::CDib()
{
Init();
}

CDib::CDib(const char* pszDibFileName)
{
Init();
    LoadFile(pszDibFileName);
}


CDib::~CDib()
{
ClearMemory();
}

void CDib::ClearMemory()
{
if(m_hDIB != NULL)
::GlobalFree(m_hDIB);
m_hDIB = 0;
    m_pDibData = NULL;
m_pszFileName = NULL;
m_pBitmapInfoHeader = NULL;
    m_pBitmapInfo = NULL;

m_pRGBQuad = NULL;
m_pBitmapFileHeader = NULL;
}

#ifdef _DEBUG
void CDib::Dump(CDumpContext& dc) const
{
Cobject::Dump(dc);
}

void CDib::AssertValid() const
{
Cobject::AssertValid();
ASSERT(m_pszFileName != NULL);
ASSERT(m_hDIB != 0);
}
#endif


void CDib::Init()
{
m_pRGBQuad = NULL; //RGBQUAD 表项
    m_pDibData = NULL; //位图像素数据
m_nWidth = 0; //宽度
m_nHeight = 0; //高度
m_nBitCount = 0; //每个像素占有的位数
    m_nTotalColors = 0; //颜色总数
    m_pBitmapFileHeader = NULL;
    m_pBitmapInfoHeader = NULL;
    m_pBitmapInfo = NULL;
m_hDIB = 0;
m_pszFileName = NULL;
}

void CDib::LoadFile(const char* pszDibFileName)
{
ASSERT(pszDibFileName);
//如果存在就释放内存
if(m_pBitmapInfo) ::GlobalFree(m_hDIB);
//再次初始化 用于多次动态重用
Init();
m_pszFileName = (char*)pszDibFileName;

BITMAPFILEHEADER bitmapFileHeader;

CFile dibFile(pszDibFileName  CFile::modeRead);
try
{
//读入位图文件头信息
UINT nBFHsize = dibFile.Read((void*)&bitmapFileHeader sizeof(BITMAPFILEHEADER));
if(nBFHsize != sizeof(BITMAPFILEHEADER))
{
m_bValid = FALSE;
return;
}
}
catch(CFileException* e)
{
e->Delete();
}

//如果为位图就进行下一步的处理
    if (bitmapFileHeader.bfType == 0x4d42)
    {
AfxGetApp()->BeginWaitCursor();

//文件长度
        DWORD dwFileLength = dibFile.GetLength();

//位图信息及位图数据的大小(字节)
        DWORD dwSize = dwFileLength - sizeof(BITMAPFILEHEADER);
 

//为Dib分配全局内存
m_hDIB = (HGLOBAL) ::GlobalAlloc(GMEM_MOVEABLE  dwSize);
if (m_hDIB == 0) m_bValid = FALSE;

//指向Dib实际像素数据的指针 
BYTE* pbyDib = (BYTE*)::GlobalLock(m_hDIB);
if (pbyDib == NULL) m_bValid = FALSE;
 
try
{
//读入内存
DWORD dwReadSize = dibFile.Read((void*)pbyDib  dwSize);
dibFile.Close();
if(dwReadSize != dwSize)
{
m_bValid = FALSE;
::GlobalUnlock(m_hDIB);
::GlobalFree(m_hDIB);
Init();
return;
}
}
catch(CFileException* e)
{
e->Delete();
}

//获取位图文件头指针和位图文件数据信息指针
        m_pBitmapInfo = (BITMAPINFO*) pbyDib;
m_pBitmapInfoHeader = (BITMAPINFOHEADER*) pbyDib;

//宽度和高度
m_nWidth = m_pBitmapInfoHeader->biWidth;
m_nHeight = m_pBitmapInfoHeader->biHeight;
//每像素的颜色位数
m_nBitCount = (BYTE)m_pBitmapInfoHeader->biBitCount;
      
//颜色数
m_nTotalColors = GetColorNumber();
        if (m_pBitmapInfoHeader->biClrUsed == 0)
            m_pBitmapInfoHeader->biClrUsed = m_nTotalColors;

//指向位图颜色索引表项的指针 如果没有颜色表项 则该值为NULL
        m_pRGBQuad = (RGBQUAD*)(pbyDib + m_pBitmapInfoHeader->biSize);

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     284726  2000-05-31 19:45  几何校正\back.bmp

     文件      34027  2010-03-08 16:13  几何校正\Debug\Dib.obj

     文件      11660  2010-03-08 16:13  几何校正\Debug\ImageGeneralTransform.obj

     文件      33339  2010-03-08 16:13  几何校正\Debug\ImageGeometry.obj

     文件      14212  2010-03-08 16:13  几何校正\Debug\ImageProcess.obj

     文件       9767  2010-03-08 16:13  几何校正\Debug\ImageWarp.obj

     文件      10789  2010-03-08 16:13  几何校正\Debug\ImageWarpDialog.obj

     文件     155729  2010-03-10 17:29  几何校正\Debug\ImgWarp.exe

     文件     388988  2010-03-10 17:29  几何校正\Debug\ImgWarp.ilk

     文件      23015  2010-03-08 16:13  几何校正\Debug\ImgWarp.obj

     文件    5492816  2010-03-08 16:13  几何校正\Debug\ImgWarp.pch

     文件     517120  2010-03-10 17:29  几何校正\Debug\ImgWarp.pdb

     文件       6020  2010-03-08 16:13  几何校正\Debug\ImgWarp.res

     文件      21629  2010-03-08 16:13  几何校正\Debug\ImgWarpDoc.obj

     文件      30901  2010-03-10 17:29  几何校正\Debug\ImgWarpView.obj

     文件      17244  2010-03-08 16:13  几何校正\Debug\MainFrm.obj

     文件     105709  2010-03-08 16:13  几何校正\Debug\StdAfx.obj

     文件     246784  2010-03-14 10:26  几何校正\Debug\vc60.idb

     文件     372736  2010-03-10 17:29  几何校正\Debug\vc60.pdb

     文件      15539  2006-06-20 21:17  几何校正\Dib.cpp

     文件       1472  2006-06-20 21:19  几何校正\Dib.h

     文件       2875  2006-06-20 21:17  几何校正\ImageGeneralTransform.cpp

     文件        702  2006-06-20 21:20  几何校正\ImageGeneralTransform.h

     文件      19822  2006-06-20 21:19  几何校正\ImageGeometry.cpp

     文件       1771  2006-06-20 21:20  几何校正\ImageGeometry.h

     文件       2882  2006-06-20 21:19  几何校正\ImageProcess.cpp

     文件        929  2006-06-20 21:20  几何校正\ImageProcess.h

     文件       1732  2006-06-20 21:19  几何校正\ImageWarp.cpp

     文件        803  2006-06-20 21:20  几何校正\ImageWarp.h

     文件       1297  2000-06-21 21:47  几何校正\ImageWarpDialog.cpp

............此处省略46个文件信息

评论

共有 条评论