level 1
汤懿
楼主
height=GetHeight();//图像高
wide=GetWidth();//图像宽,
stop=0;
counter=0;
p_temp=new BYTE[wide*height];//开辟一个临时内存区
memset(p_temp,255,wide*height);//置白
//从左到右、从上到下标号
const int T=5;//T为阈值,RGB值小于该阈值被认为是黑,
for(i=0; i<wide; i++)//将第零行置白
*(m_pData+(height-1)*wide+i)=255;
for(j=0;j<height;j++)//将第零列置白
*(m_pData+(height-j-1)*wide)=255;
这里的零行置白和零列置白到底怎么算的啊?
(height-1)*wide+i 是什么意思啊?
为什么不是用数组矩阵呢?
是和x-y坐标轴类似的排列吗?但是,为什么不是(height-1)*(wide+i )呢?看不懂
高手指点啊!!!
感谢了
这个是图片的导入程序:
void CDib::LoadFile(const char* dibFileName)
{
strcpy(m_fileName,dibFileName);
CFile dibFile(m_fileName, CFile::modeRead);
dibFile.Read((void*)&bitmapFileHeader,sizeof(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!");
}
}
2011年03月19日 02点03分
1
wide=GetWidth();//图像宽,
stop=0;
counter=0;
p_temp=new BYTE[wide*height];//开辟一个临时内存区
memset(p_temp,255,wide*height);//置白
//从左到右、从上到下标号
const int T=5;//T为阈值,RGB值小于该阈值被认为是黑,
for(i=0; i<wide; i++)//将第零行置白
*(m_pData+(height-1)*wide+i)=255;
for(j=0;j<height;j++)//将第零列置白
*(m_pData+(height-j-1)*wide)=255;
这里的零行置白和零列置白到底怎么算的啊?
(height-1)*wide+i 是什么意思啊?
为什么不是用数组矩阵呢?
是和x-y坐标轴类似的排列吗?但是,为什么不是(height-1)*(wide+i )呢?看不懂
高手指点啊!!!
感谢了
这个是图片的导入程序:
void CDib::LoadFile(const char* dibFileName)
{
strcpy(m_fileName,dibFileName);
CFile dibFile(m_fileName, CFile::modeRead);
dibFile.Read((void*)&bitmapFileHeader,sizeof(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!");
}
}