基本小函数(12)
发布时间:2021-06-06
发布时间:2021-06-06
图像处理的有用资料
VC
来自 Visual C++实现数字图像增强处理
void CDibView::OnZftJh() {
CClientDC pDC(this);
HDC hDC=pDC.GetSafeHdc(); // 获取当前设备上下文的句柄; SetStretchBltMode(hDC,COLORONCOLOR); CDibDoc *pDoc=GetDocument(); HDIB hdib;
hdib=pDoc->GetHDIB();
BITMAPINFOHEADER *lpDIBHdr; // 位图信息头结构指针;
BYTE *lpDIBBits; // 指向位图像素灰度值的指针;
lpDIBHdr=(BITMAPINFOHEADER *)GlobalLock(hdib); // 得到图像的位图头信息
lpDIBBits=(BYTE*)lpDIBHdr+sizeof(BITMAPINFOHEADER)+256*sizeof(RGBQUAD);
// 获取图像像素值
float p[256],p1[256],num[256]; int i,j,k;
for(i=0;i<256;i++)// 清空三个数组; {
num[i]=0.0f; p[i]=0.0f; p1[i]=0.0f; }
// num[]存放图象各个灰度级出现的次数; int Height=lpDIBHdr->biHeight; int Width=lpDIBHdr->biWidth; for(i=0;i<HEIGHT;I++) for(j=30;j<WIDTH-20;J++) {
num[*(lpDIBBits+WIDTHBYTES(Width*8)*i+j)]++; }
// p[]存放图像各个灰度级的出现概率; for(i=0;i<256;i++) {
p[i]=num[i]/(Width*Height); }