资源简介
各类畸变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个文件信息
评论
共有 条评论