资源简介
用C语言实现数字图像处理中的多种操作:如实现图像的灰度变换,图像的中值滤波,线性变换,缩放,平移,旋转,灰度直方图,开运算,闭运算,,膨胀/腐蚀元素的设定等等功能。
代码片段和文件信息
// cdib.cpp
// new version for WIN32
#include “stdafx.h“
#include “cdib.h“
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
IMPLEMENT_SERIAL(CDib Cobject 0);
CDib::CDib()
{
m_hFile = NULL;
m_hBitmap = NULL;
m_hPalette = NULL;
m_nBmihAlloc = m_nImageAlloc = noAlloc;
Empty();
}
CDib::CDib(CSize size int nBitCount)
{
m_hFile = NULL;
m_hBitmap = NULL;
m_hPalette = NULL;
m_nBmihAlloc = m_nImageAlloc = noAlloc;
Empty();
ComputePaletteSize(nBitCount);
m_lpBMIH = (LPBITMAPINFOHEADER) new
char[sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * m_nColorTableEntries];
m_nBmihAlloc = crtAlloc;
m_lpBMIH->biSize = sizeof(BITMAPINFOHEADER);
m_lpBMIH->biWidth = size.cx;
m_lpBMIH->biHeight = size.cy;
m_lpBMIH->biPlanes = 1;
m_lpBMIH->biBitCount = nBitCount;
m_lpBMIH->biCompression = BI_RGB;
m_lpBMIH->biSizeImage = 0;
m_lpBMIH->biXPelsPerMeter = 0;
m_lpBMIH->biYPelsPerMeter = 0;
m_lpBMIH->biClrUsed = m_nColorTableEntries;
m_lpBMIH->biClrImportant = m_nColorTableEntries;
ComputeMetrics();
memset(m_lpvColorTable 0 sizeof(RGBQUAD) * m_nColorTableEntries);
m_lpImage = NULL; // no data yet
}
CDib::~CDib()
{
Empty();
}
CSize CDib::GetDimensions()
{
if(m_lpBMIH == NULL) return CSize(0 0);
return CSize((int) m_lpBMIH->biWidth (int) m_lpBMIH->biHeight);
}
BOOL CDib::AttachMapFile(const char* strPathname BOOL bShare) // for reading
{
// if we open the same file twice Windows treats it as 2 separate files
// doesn‘t work with rare BMP files where # palette entries > biClrUsed
HANDLE hFile = ::CreateFile(strPathname GENERIC_WRITE | GENERIC_READ
bShare ? FILE_SHARE_READ : 0
NULL OPEN_EXISTING FILE_ATTRIBUTE_NORMAL NULL);
ASSERT(hFile != INVALID_HANDLE_VALUE);
DWORD dwFileSize = ::GetFileSize(hFile NULL);
HANDLE hMap = ::CreateFileMapping(hFile NULL PAGE_READWRITE 0 0 NULL);
DWORD dwErr = ::GetLastError();
if(hMap == NULL)
{
AfxMessageBox(“Empty bitmap file“);
return FALSE;
}
LPVOID lpvFile = ::MapViewOfFile(hMap FILE_MAP_WRITE 0 0 0); // map whole file
ASSERT(lpvFile != NULL);
if(((LPBITMAPFILEHEADER) lpvFile)->bfType != 0x4d42)
{
AfxMessageBox(“Invalid bitmap file“);
DetachMapFile();
return FALSE;
}
AttachMemory((LPBYTE) lpvFile + sizeof(BITMAPFILEHEADER));
m_lpvFile = lpvFile;
m_hFile = hFile;
m_hMap = hMap;
return TRUE;
}
BOOL CDib::CopyToMapFile(const char* strPathname)
{
// copies DIB to a new file releases prior pointers
// if you previously used CreateSection the HBITMAP will be NULL (and unusable)
BITMAPFILEHEADER bmfh;
bmfh.bfType = 0x4d42; // ‘BM‘
bmfh.bfSize = m_dwSizeImage + sizeof(BITMAPINFOHEADER) +
sizeof(RGBQUAD) * m_nColorTableEntries + sizeof(BITMAPFILEHEADER);
// meaning of bfSize open to interpretation
bmfh.bfReserved1 = bmfh.bfReserved2 = 0;
bmfh.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 16334 2010-04-02 23:01 VC-DIP-源代码\源代码\cdib.cpp
文件 1906 2010-04-02 23:01 VC-DIP-源代码\源代码\cdib.h
文件 3159 2010-04-02 23:01 VC-DIP-源代码\源代码\cDlgMorphClose.cpp
文件 1675 2010-04-02 23:01 VC-DIP-源代码\源代码\cDlgMorphClose.h
文件 3200 2010-04-02 23:01 VC-DIP-源代码\源代码\cDlgMorphDilation.cpp
文件 1708 2010-04-02 23:01 VC-DIP-源代码\源代码\cDlgMorphDilation.h
文件 3187 2010-04-02 23:01 VC-DIP-源代码\源代码\cDlgMorphErosion.cpp
文件 1697 2010-04-02 23:01 VC-DIP-源代码\源代码\cDlgMorphErosion.h
文件 3142 2010-04-02 23:01 VC-DIP-源代码\源代码\cDlgMorphOpen.cpp
文件 1664 2010-04-02 23:01 VC-DIP-源代码\源代码\cDlgMorphOpen.h
文件 51304 2010-07-02 20:58 VC-DIP-源代码\源代码\ch1_1.aps
文件 18056 2010-07-02 21:01 VC-DIP-源代码\源代码\ch1_1.clw
文件 4307 2010-04-02 23:01 VC-DIP-源代码\源代码\ch1_1.cpp
文件 8572 2010-04-02 23:01 VC-DIP-源代码\源代码\ch1_1.dsp
文件 535 2010-04-02 23:01 VC-DIP-源代码\源代码\ch1_1.dsw
文件 1345 2010-04-02 23:01 VC-DIP-源代码\源代码\ch1_1.h
文件 164864 2010-07-02 21:01 VC-DIP-源代码\源代码\ch1_1.ncb
文件 126976 2010-07-02 21:01 VC-DIP-源代码\源代码\ch1_1.opt
文件 6121 2010-07-02 20:17 VC-DIP-源代码\源代码\ch1_1.plg
文件 43164 2010-04-02 23:01 VC-DIP-源代码\源代码\ch1_1.rc
文件 41641 2010-04-02 23:01 VC-DIP-源代码\源代码\ch1_1.rc.bak
文件 875 2010-04-02 23:01 VC-DIP-源代码\源代码\ch1_1.sln
文件 22310 2010-04-02 23:01 VC-DIP-源代码\源代码\ch1_1.vcproj
文件 1427 2010-04-02 23:01 VC-DIP-源代码\源代码\ch1_1.vcproj.2220FA2565B34DB.Bob Hu.user
文件 7742 2010-04-02 23:01 VC-DIP-源代码\源代码\ch1_1Doc.cpp
文件 2065 2010-04-02 23:01 VC-DIP-源代码\源代码\ch1_1Doc.h
文件 95792 2010-04-02 23:01 VC-DIP-源代码\源代码\ch1_1View.cpp
文件 4079 2010-04-02 23:01 VC-DIP-源代码\源代码\ch1_1View.h
文件 1879 2010-04-02 23:02 VC-DIP-源代码\源代码\ChildFrm.cpp
文件 1451 2010-04-02 23:02 VC-DIP-源代码\源代码\ChildFrm.h
............此处省略188个文件信息
相关资源
- 数字图像处理的课程设计,图像处理
- 数字图像处理-基于内容的图像分类
- 数字图像处理 MFC bmp格式图片打开与保
- Visual C++数字图像处理中文教程
- C++数字图像处理典型算法及实现--图像
- C语言实用数字图像处理(日本的,看
- [毕业分享] MFC实现数字图像处理软件
- 书中-part2-1
- vc++ 数字图像处理典型算法及实现 源
- Visual C++数字图像处理谢凤英版源代码
- VC C++数字图像处理实验程序
- C语言实用数字图像处理_源代码code
- 数字图像处理MFC编程之灰度图像线性
- 数字图像处理 完整源代码
- vc++mfc经典数字图像处理程序
- MFC数字图像处理
- VC++实现灰度图像的6种边缘检测算子
- 数字图像处理中值,均值滤波
- 基于C语言的数字图像处理
- 数字图像处理技术:图像增强和代数
- visual c++数字图像处理何斌光盘源代码
- 数字图像处理平滑锐化雕刻浮雕处理
- 数字图像处理 DIB的读取与显示VC源代
- 数字图像处理 的C++反色
- 水表指针识别数字图像处理C语言
- 使用C++进行图像的DCT变换
- VC++ 数字图像处理典型算法及实现 源
- 数字图像处理——MFC实现DICOM图像打开
- 数字图像处理与机器视觉(Visual C++与
- 数字图像处理实习程序
评论
共有 条评论