资源简介
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++实现
相关资源
- 国际象棋的qt源代码
- C++中头文件与源文件的作用详解
- C++多线程网络编程Socket
- VC++ 多线程文件读写操作
- 利用C++哈希表的方法实现电话号码查
- 移木块游戏,可以自编自玩,vc6.0编写
- C++纯文字DOS超小RPG游戏
- MFC数字钟(基于VC6.0)
- 安科瑞智能电能表MODBUS通讯程序 VC6
- VC++MFC小游戏实例教程(实例)+MFC类库
- VC6LineNumberAddin.dll
- 用C语言进行数字图像处理
- 用VC6.0实现多边形扫描线填充算法
- 连铸温度场计算程序(C++)
- 6自由度机器人运动学正反解C++程序
- Em算法(使用C++编写)
- libstdc++-4.4.7-4.el6.i686.rpm
- VC++实现CMD命令执行与获得返回信息
- 白话C++(全)
- C++标准库第1、2
- 大数类c++大数类
- C++语言编写串口调试助手
- VC助手 VC6.0助手
- c++素数筛选法
- C++ mqtt 用法
- 商品库存管理系统 C++ MFC
- c++ 多功能计算器
- C++17 In Detail
- 嵌入式QtC++编程课件
- 颜色识别形状识别STM103嵌入式代码
评论
共有 条评论