资源简介
检测两幅图像的特征点,然后计算出特征点之间的距离,距离以像素为单位,只能检测灰度图,并可以对图像做几何与灰度值的处理
代码片段和文件信息
#include “stdafx.h“
#include “windowsx.h“
#include “math.h“
#include “Dib.h“
#define WIDTHBYTES(bits) (((bits) + 31) / 32 * 4)
CDib::CDib()
{
size=0;
}
CDib::~CDib()
{
GlobalFreePtr(m_pBitmapInfo);
}
void CDib::LoadFile(const char* dibFileName)
{
strcpy(m_fileNamedibFileName);
CFile dibFile(m_fileName CFile::modeRead);
dibFile.Read((void*)&bitmapFileHeadersizeof(BITMAPFILEHEADER));
if (bitmapFileHeader.bfType == 0x4d42)
{
DWORD fileLength = dibFile.GetLength();
size = fileLength -sizeof(BITMAPFILEHEADER);
pDib =(BYTE*)GlobalAllocPtr(GMEM_MOVEABLE size);
dibFile.Read((void*)pDib size);
dibFile.Close();
m_pBitmapInfo = (BITMAPINFO*) pDib;
m_pBitmapInfoHeader = (BITMAPINFOHEADER*) pDib;
m_pRGB = (RGBQUAD*)(pDib +
m_pBitmapInfoHeader->biSize);
int m_numberOfColors = GetNumberOfColors();
if (m_pBitmapInfoHeader->biClrUsed == 0)
m_pBitmapInfoHeader->biClrUsed =
m_numberOfColors;
DWORD colorTableSize = m_numberOfColors *
sizeof(RGBQUAD);
m_pData = pDib + m_pBitmapInfoHeader->biSize
+ colorTableSize;
if (m_pRGB == (RGBQUAD*)m_pData) // No color table
m_pRGB = NULL;
m_pBitmapInfoHeader->biSizeImage = GetSize();
m_valid = TRUE;
}
else
{
m_valid = FALSE;
AfxMessageBox(“This isn‘t a bitmap file!“);
}
}
BOOL CDib::IsValid()
{
return m_valid;
}
char* CDib::GetFileName()
{
return m_fileName;
}
UINT CDib::GetWidth()
{
return (UINT) m_pBitmapInfoHeader->biWidth;
}
UINT CDib::GetHeight()
{
return (UINT) m_pBitmapInfoHeader->biHeight;
}
DWORD CDib::GetSize()
{
if (m_pBitmapInfoHeader->biSizeImage != 0)
return m_pBitmapInfoHeader->biSizeImage;
else
{
DWORD height = (DWORD) GetHeight();
DWORD width = (DWORD) GetWidth();
return height * width;
}
}
void CDib::SetWidth(UINT width)
{
m_pBitmapInfoHeader->biWidth=width;
}
void CDib::SetHeight(UINT height)
{
m_pBitmapInfoHeader->biHeight=height;
}
UINT CDib::GetNumberOfColors()
{
int numberOfColors;
if ((m_pBitmapInfoHeader->biClrUsed == 0) &&
(m_pBitmapInfoHeader->biBitCount < 9))
{
switch (m_pBitmapInfoHeader->biBitCount)
{
case 1: numberOfColors = 2; break;
case 4: numberOfColors = 16; break;
case 8: numberOfColors = 256;
}
}
else
numberOfColors = (int) m_pBitmapInfoHeader->biClrUsed;
return numberOfColors;
}
BYTE* CDib::GetData()
{
return m_pData;
}
RGBQUAD* CDib::GetRGB()
{
return m_pRGB;
}
BITMAPINFO* CDib::GetInfo()
{
return m_pBitmapInfo;
}
WORD CDib::PaletteSize(LPBYTE lpDIB)
{
return (DIBNumColors(lpDIB) * sizeof(RGBTRIPLE));
}
WORD CDib::DIBNumColors(LPBYTE lpDIB)
{
WORD wBitCount; // DIB bit coun
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2695 2011-09-02 14:09 dutu\dutu.clw
文件 4263 2011-05-19 13:18 dutu\ReadMe.txt
文件 1334 2011-05-19 13:18 dutu\dutu.h
文件 1054 2011-05-19 13:18 dutu\StdAfx.h
文件 206 2011-05-19 13:18 dutu\StdAfx.cpp
文件 1689 2011-05-26 11:06 dutu\MainFrm.h
文件 3019 2011-05-26 11:06 dutu\MainFrm.cpp
文件 533 2011-05-19 13:18 dutu\dutu.dsw
文件 246784 2011-09-02 14:10 dutu\dutu.ncb
文件 242 2011-09-02 14:09 dutu\dutu.plg
文件 1625 2011-05-19 13:41 dutu\DutuWiew1.h
文件 4954 2011-05-19 13:41 dutu\DutuWiew1.cpp
文件 4173 2011-05-20 15:31 dutu\dutu.cpp
文件 953 2011-05-20 15:38 dutu\pingyi.cpp
文件 914 2011-05-20 16:12 dutu\Dib.h
文件 3936 2011-05-20 16:13 dutu\Dib.cpp
文件 1190 2011-05-20 16:16 dutu\pingyi.h
文件 10977 2011-05-23 14:09 dutu\dutu.rc
文件 1104 2011-05-23 10:18 dutu\Resource.h
文件 28548 2011-08-27 09:42 dutu\dutu.aps
文件 4892 2011-05-24 15:39 dutu\dutu.dsp
文件 2015 2011-05-25 15:36 dutu\dutuDoc.cpp
文件 1460 2011-05-20 19:55 dutu\dutuDoc.h
文件 1031 2011-05-24 17:13 dutu\JiHeBianHuan.h
文件 19891 2011-05-24 17:30 dutu\JiHeBianHuan.cpp
文件 2338 2011-05-26 10:48 dutu\dutuView.h
文件 9874 2011-05-26 10:50 dutu\dutuView.cpp
文件 308278 2006-03-01 10:37 dutu\10.bmp
文件 308278 2006-03-01 10:36 dutu\4.bmp
文件 308278 2006-03-01 10:37 dutu\6.bmp
............此处省略41个文件信息
评论
共有 条评论