资源简介
Hough变换、傅立叶变换、二值化、边缘检测、轮廓提取、模板匹配、阈值分割、图像复原
代码片段和文件信息
// 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
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 66616 2003-06-18 22:44 VC++数字图象处理\图像\Couple.bmp
文件 172800 2003-06-18 22:44 VC++数字图象处理\图像\DRAGON_256_1.bmp
文件 42240 2003-06-18 22:44 VC++数字图象处理\图像\dragon1.bmp
文件 262710 2003-06-18 22:44 VC++数字图象处理\图像\heci1.bmp
文件 66616 2003-06-18 22:44 VC++数字图象处理\图像\rec1.bmp
文件 66616 2003-06-18 22:44 VC++数字图象处理\图像\rec2.bmp
文件 205306 2003-06-18 22:44 VC++数字图象处理\图像\test.bmp
文件 308278 2003-06-18 22:44 VC++数字图象处理\图像\view.bmp
文件 110414 2003-06-18 22:44 VC++数字图象处理\图像\Hough变换\result.bmp
文件 110416 2003-06-18 22:44 VC++数字图象处理\图像\Hough变换\source.bmp
..A.SH. 5632 2005-06-17 11:42 VC++数字图象处理\图像\Hough变换\Thumbs.db
目录 0 2006-05-26 09:30 VC++数字图象处理\图像\Hough变换
文件 33120 2003-06-18 22:44 VC++数字图象处理\图像\边缘检测\bacteria.BMP
文件 33118 2003-06-18 22:44 VC++数字图象处理\图像\边缘检测\bacteriagausslaplace.BMP
文件 33118 2003-06-18 22:44 VC++数字图象处理\图像\边缘检测\bacteriaprewitt.BMP
文件 33118 2003-06-18 22:44 VC++数字图象处理\图像\边缘检测\bacteriarobert.BMP
文件 73160 2003-06-18 22:44 VC++数字图象处理\图像\边缘检测\blood1.BMP
文件 73158 2003-06-18 22:44 VC++数字图象处理\图像\边缘检测\blood1gausslaplace.BMP
文件 73158 2003-06-18 22:44 VC++数字图象处理\图像\边缘检测\blood1kirsch.BMP
文件 73158 2003-06-18 22:44 VC++数字图象处理\图像\边缘检测\blood1robert.BMP
文件 66616 2003-06-18 22:44 VC++数字图象处理\图像\边缘检测\Miss.bmp
文件 66614 2003-06-18 22:44 VC++数字图象处理\图像\边缘检测\Missprewitt.bmp
文件 66614 2003-06-18 22:44 VC++数字图象处理\图像\边缘检测\Missrobert.bmp
文件 66614 2003-06-18 22:44 VC++数字图象处理\图像\边缘检测\Misssobel.bmp
..A.SH. 8192 2005-06-17 11:42 VC++数字图象处理\图像\边缘检测\Thumbs.db
目录 0 2006-05-26 09:30 VC++数字图象处理\图像\边缘检测
文件 66614 2003-06-18 22:44 VC++数字图象处理\图像\差影法\result.bmp
文件 66614 2003-06-18 22:44 VC++数字图象处理\图像\差影法\source.bmp
文件 66616 2003-06-18 22:44 VC++数字图象处理\图像\差影法\template.bmp
..A.SH. 7680 2005-06-17 11:42 VC++数字图象处理\图像\差影法\Thumbs.db
............此处省略251个文件信息
- 上一篇:蒙特卡洛积分方法 C语言
- 下一篇:学生选课管理系统C++实现
相关资源
- 学生选课管理系统C++实现
- Data Structures and Algorithm Analysis in C++
- 人工神经网络之BP网络模拟三角函数
- B样条曲线生成算法,用VC++加OpenGL写的
- 不规则三角网生长算法
- c++大作业(程序以及报告)
- 计算机图形学 大作业 多功能图形学程
- 用C++stl与QT实现的A*算法Demo
- 挖金矿游戏源码c++
- C++多人联网泡泡大战完整源码
- 移动曲面拟合法C++描述
- 十个网络驱动层封包截取防火墙源码
- DES MFC实现在VC6.0中
- C++清华大学-郑莉-第四版-讲稿(学堂
- vs使用纯c++编写的com组件
- apriori算法c++程序实现,附测试数据以
- 仿360UI界面QT源码
- C++语言编写图像处理程序
- C++职工信息管理 实现文件存取操作
- MFC中B样条绘制
- 操作系统_生产者消费者c++、mfc实现
- 《测量平差程序设计》宋力杰编著光
- 通用杀毒软件VC++源代码
- Windows程序设计小游戏捕鱼达人
- 基于c++的m序列的实现方式
- VC6.0+MFC+USBCAN上位机通信控制
- VC++实现Contourlet图像处理
- 用c++实现的抓包并分析协议
- C语言C++常见面试题含答案 (1).pdf
- libstdc++-devel-4.4.6-4.el6.x86_64.rpm
评论
共有 条评论