BOOL CDibImage::CannyDIB(LPSTR lpDIB)
{
LONG lWidth; // 图像的宽度
LONG lHeight; // 图像的高度 LONG lLineBytes; // 图像每行的字节数
LPSTR lpDIBBits; // 指向图像的指针
LPSTR lpDst;
LONG i;
LONG j;
lpDIBBits = FindDIBBits(lpDIB); // 找到DIB图像象素起始位置
lWidth = DIBWidth(lpDIB); // 获取图像的"宽度"(4的倍数)
lLineBytes = WIDTHBYTES(lWidth * 8);// 计算图像每行的字节数
lHeight=DIBHeight(lpDIB); // 获取图像的高度
for(i=0; i<lHeight;i++) // 针对图像每行进行操作
/ {
for(j=0;j<lWidth;j++) // 针对图像每列进行操作
/ {
lpDst = (char *)lpDIBBits + lLineBytes * i + j;
*((unsigned char*)lpDst)=255;
return TRUE;
}
{
LONG lWidth; // 图像的宽度
LONG lHeight; // 图像的高度 LONG lLineBytes; // 图像每行的字节数
LPSTR lpDIBBits; // 指向图像的指针
LPSTR lpDst;
LONG i;
LONG j;
lpDIBBits = FindDIBBits(lpDIB); // 找到DIB图像象素起始位置
lWidth = DIBWidth(lpDIB); // 获取图像的"宽度"(4的倍数)
lLineBytes = WIDTHBYTES(lWidth * 8);// 计算图像每行的字节数
lHeight=DIBHeight(lpDIB); // 获取图像的高度
for(i=0; i<lHeight;i++) // 针对图像每行进行操作
/ {
for(j=0;j<lWidth;j++) // 针对图像每列进行操作
/ {
lpDst = (char *)lpDIBBits + lLineBytes * i + j;
*((unsigned char*)lpDst)=255;
return TRUE;
}
这行只对像素深度是8位的图像有效,如果是24位的图像,你的结果会只有1/3的图像变白。像素深度信息在图像信息头里面有。