資源簡介
圖像的增強/////////////////////////////////直方圖對話框構造函數;
ZFT::ZFT(CWnd* pParent /*=NULL*/)
: CDialog(ZFT::IDD, pParent)//ZFT為定義的用來顯示直方圖的對話框類;
{
Width=Height=0;//對話框初始化階段設置圖像的寬和高為"0";
}
////////////////////////對話框重畫函數;
void ZFT::OnPaint()
{
CRect rect;//矩形區域對象;
CWnd *pWnd;//得到圖片框的窗口指針;
pWnd=GetDlgItem(IDC_Graphic);//得到ZFT對話框內的"Frame"控件的指針;
file://(IDC_Graphic為放置在對話框上的一個"Picture"控件,并講類型設置為"Frame")。
pWnd->GetClientRect(&rect);//得到"Frame"控件窗口的"視"區域;
int i;
CPaintDC dc(pWnd);//得到"Frame"控件的設備上下文;
file://畫直方圖的x、y軸;
dc.MoveTo(0,rect.Height());
dc.LineTo(rect.Width(),rect.Height());
dc.MoveTo(0,rect.Height());
dc.LineTo(0,0);
file://畫直方圖,num[]是"ZFT"的內部數組變量,存放的是圖像各個灰度級出現的概率;該數組的各個分量在 顯示具體圖像的直方圖時設置;
for(i=0;iGetWindowRect(&rect);//獲取pWnd窗口對象窗口區域位置;
file://屏幕坐標轉換為客戶區坐標;
ScreenToClient(&rect);
file://判斷當前鼠標是否指在直方圖內;
if(rect.PtInRect (point))
{
int x=point1.x-rect.left;
file://當前鼠標位置減去區域的起始位置恰好為當前鼠標所指位置所表示的灰度級;
string.Format("%d",x);
file://顯示當前位置對應的圖像的灰度級;
pWndText->SetWindowText((LPCTSTR)string);
}
CDialog::OnMouseMove(nFlags, point);
}
////////////////////////////////////////
void CDibView::OnImagehorgm()
file://在程序的"視"類對象內處理顯示圖像直方圖的函數;
{
CDibDoc *pDoc=GetDocument();
HDIB hdib;
hdib=pDoc->GetHDIB();
BITMAPINFOHEADER *lpDIBHdr;//位圖信息頭結構指針;
BYTE *lpDIBBits;//指向位圖像素灰度值的指針;
lpDIBHdr=( BITMAPINFOHEADER *)GlobalLock(hdib);//得到圖像的位圖頭信息
lpDIBB
代碼片段和文件信息
- 上一篇:GPU桌面監視器組件
- 下一篇:人臉檢測與識別
評論
共有 條評論