📄 imagenview.cpp
字号:
pCmdUI->Enable((!pImg[1]->IsNull())&&(ImageType(pImg[1])==3));
}
void CImageNView::OnUpdateSearchAreaKernel(CCmdUI *pCmdUI)
{
pCmdUI->Enable((!pImg[1]->IsNull())&&(ImageType(pImg[1])==0));
}
void CImageNView::OnUpdateLimitErosion(CCmdUI *pCmdUI)
{
pCmdUI->Enable((!pImg[1]->IsNull())&&(ImageType(pImg[1])==0));
}
void CImageNView::OnUpdateConditionDilation(CCmdUI *pCmdUI)
{
pCmdUI->Enable((!pImg[8]->IsNull())&&(ImageType(pImg[1])==0));
}
void CImageNView::OnUpdateAutomaticSelect(CCmdUI *pCmdUI)
{
pCmdUI->Enable((!pImg[1]->IsNull())&&(ImageType(pImg[1])==0));
}
void CImageNView::OnUpdateWhiteArea(CCmdUI *pCmdUI)
{
pCmdUI->Enable((!pImg[1]->IsNull())&&(ImageType(pImg[1])==0));
}
void CImageNView::OnUpdateBlackArea(CCmdUI *pCmdUI)
{
pCmdUI->Enable((!pImg[1]->IsNull())&&(ImageType(pImg[1])==0));
}
//-------------------------------------------------------------------------
void CImageNView::GrayTransfer(int f)
{
struct IMAGEPARAMENT P;
int x,y,h,n,s,t;
long pg[256];
CClientDC dc(this);
ClearWindow(0);
ImageCopy(pImg[0],pImg[1]);
GrayScaleTransfor(pImg[1],f);
WorkCanvusToWindow();
GetImageParament(pImg[0],&P);
x=P.nWidth+30;
y=40;
h=120;
n=180;
s=256;
t=20;
Histogram(pImg[0],0,0,P.nWidth,P.nHeight,pg);
CreateHistogram(pImg[2],pg,h,0,0);
pImg[2]->BitBlt(dc,x,y,s+20,h+20,0,0,SRCCOPY);
CreateColorStrip(pImg[2],pImg[0],s,t);
pImg[2]->BitBlt(dc,x+9,y+135,s+2,t+2,0,0,SRCCOPY);
CreateTransferCurve(pImg[2],pg,f);
if (f!=10)
pImg[2]->BitBlt(dc,x+74,y+20+n,130,130,0,0,SRCCOPY);
Histogram(pImg[1],0,0,P.nWidth,P.nHeight,pg);
CreateHistogram(pImg[2],pg,h,0,0);
pImg[2]->BitBlt(dc,x,y+2*n,s+20,h+20,0,0,SRCCOPY);
CreateColorStrip(pImg[2],pImg[1],s,t);
pImg[2]->BitBlt(dc,x+9,y+135+2*n,s+2,t+2,0,0,SRCCOPY);
if (f>9)
ImageCopy(pImg[1],pImg[0]);
}
void CImageNView::OnGtLinear()
{
GrayTransfer(1);
}
void CImageNView::OnGtSqrt()
{
GrayTransfer(2);
}
void CImageNView::OnGtLog()
{
GrayTransfer(3);
}
void CImageNView::OnGtSquare()
{
GrayTransfer(4);
}
void CImageNView::OnGtExp()
{
GrayTransfer(5);
}
void CImageNView::OnGtEqual()
{
GrayTransfer(6);
}
void CImageNView::OnGtHistoEq()
{
GrayTransfer(7);
}
void CImageNView::OnGtNega()
{
GrayTransfer(8);
}
void CImageNView::OnBorderEqual()
{
GrayTransfer(9);
}
void CImageNView::OnDensitySegment()
{
GrayTransfer(10);
}
void CImageNView::OnGtPsendoColor()
{
GrayTransfer(11);
}
void CImageNView::OnFormAnalysis()
{
struct IMAGEPARAMENT P;
int x,y,h,s;
CClientDC dc(this);
CString str1;
ClearWindow(1);
GetImageParament(pImg[1],&P);
x=P.nWidth+10;
y=40;
h=120;
s=256;
CreateHistogramA(pImg[2],pImg[1],h,1+2);
pImg[2]->BitBlt(dc,x,y,s+20,h+50,0,0,SRCCOPY);
Threshold(pImg[1],1,0);
str1.Format(" 的二值图像");
WriteTitle(pImg[1],m_FileName,str1);
WorkCanvusToWindow();
}
void CImageNView::OnPtileThreshold()
{
CString str1;
Threshold(pImg[1],2,0.20);
str1.Format(" 的二值图像");
WriteTitle(pImg[1],m_FileName,str1);
WorkCanvusToWindow();
}
void CImageNView::OnOtsuThreshold()
{
CString str1;
Threshold(pImg[1],3,0);
str1.Format(" 的二值图像");
WriteTitle(pImg[1],m_FileName,str1);
WorkCanvusToWindow();
}
void CImageNView::OnMinimumThreshold()
{
CString str1;
Threshold(pImg[1],4,0);
str1.Format(" 的二值图像");
WriteTitle(pImg[1],m_FileName,str1);
WorkCanvusToWindow();
}
void CImageNView::OnEntropicThreshold()
{
CString str1;
Threshold(pImg[1],5,0);
str1.Format(" 的二值图像");
WriteTitle(pImg[1],m_FileName,str1);
WorkCanvusToWindow();
}
void CImageNView::OnBiasnormalThreshold()
{
CString str1;
Threshold(pImg[1],6,0);
str1.Format(" 的二值图像");
WriteTitle(pImg[1],m_FileName,str1);
WorkCanvusToWindow();
}
void CImageNView::OnMomentThreshold()
{
CString str1;
Threshold(pImg[1],7,0);
str1.Format(" 的二值图像");
WriteTitle(pImg[1],m_FileName,str1);
WorkCanvusToWindow();
}
void CImageNView::OnColligationThreshold()
{
CString str1;
Threshold(pImg[1],8,0);
str1.Format(" 的二值图像");
WriteTitle(pImg[1],m_FileName,str1);
WorkCanvusToWindow();
}
void CImageNView::OnSimpleThreshold()
{
CString str1;
Threshold(pImg[1],9,0);
str1.Format(" 的二值图像");
WriteTitle(pImg[1],m_FileName,str1);
WorkCanvusToWindow();
}
void CImageNView::OnGradBorddetec()
{
LocalProcess(pImg[1],1);
WorkCanvusToWindow();
}
void CImageNView::OnRobertsBorddetec()
{
LocalProcess(pImg[1],2);
WorkCanvusToWindow();
}
void CImageNView::OnSobelBorddetec()
{
LocalProcess(pImg[1],3);
WorkCanvusToWindow();
}
void CImageNView::OnLaplaceBorddetec()
{
LocalProcess(pImg[1],4);
WorkCanvusToWindow();
}
void CImageNView::OnKirschBorddetec()
{
LocalProcess(pImg[1],5);
WorkCanvusToWindow();
}
void CImageNView::OnRobinsonBorddetec()
{
LocalProcess(pImg[1],6);
WorkCanvusToWindow();
}
void CImageNView::OnPrewittBorddetec()
{
LocalProcess(pImg[1],7);
WorkCanvusToWindow();
}
void CImageNView::OnSmooth5()
{
LocalProcess(pImg[1],8);
WorkCanvusToWindow();
}
void CImageNView::OnSmooth9()
{
LocalProcess(pImg[1],9);
WorkCanvusToWindow();
}
void CImageNView::OnMedian5()
{
LocalProcess(pImg[1],10);
WorkCanvusToWindow();
}
void CImageNView::OnMedian9()
{
LocalProcess(pImg[1],11);
WorkCanvusToWindow();
}
void CImageNView::OnBoundaryEnhance()
{
LocalProcess(pImg[1],12);
WorkCanvusToWindow();
}
void CImageNView::OnLapsketchBorddetec()
{
LocalProcess(pImg[1],13);
WorkCanvusToWindow();
}
void CImageNView::OnLoGBorddetec()
{
LocalProcess(pImg[1],14);
WorkCanvusToWindow();
}
void CImageNView::OnOneWidthLineDetect()
{
LocalProcess(pImg[1],15);
WorkCanvusToWindow();
}
void CImageNView::OnRemoveLineNoise()
{
LocalProcess(pImg[1],16);
WorkCanvusToWindow();
}
void CImageNView::OnSobelThinning()
{
LocalProcess(pImg[1],17);
WorkCanvusToWindow();
}
void CImageNView::OnLogPrewitt()
{
LocalProcess(pImg[1],18);
WorkCanvusToWindow();
}
void CImageNView::OnHilditchThinning()
{
CurveThinning(pImg[1],pImg[0],1);
WorkCanvusToWindow();
}
void CImageNView::OnDeutchThinning()
{
CurveThinning(pImg[1],pImg[0],2);
WorkCanvusToWindow();
}
void CImageNView::OnFastthinThinning()
{
CurveThinning(pImg[1],pImg[0],3);
WorkCanvusToWindow();
}
void CImageNView::OnNaccacheThinning()
{
CurveThinning(pImg[1],pImg[0],4);
WorkCanvusToWindow();
}
void CImageNView::OnPavlidis1Thinning()
{
CurveThinning(pImg[1],pImg[0],5);
WorkCanvusToWindow();
}
void CImageNView::OnPavlidis2Thinning()
{
CurveThinning(pImg[1],pImg[0],6);
WorkCanvusToWindow();
}
void CImageNView::OnRosenfeld4Thinning()
{
CurveThinning(pImg[1],pImg[0],7);
WorkCanvusToWindow();
}
void CImageNView::OnRosenfeld8Thinnin()
{
CurveThinning(pImg[1],pImg[0],8);
WorkCanvusToWindow();
}
void CImageNView::OnRemoveNoise()
{
CurveThinning(pImg[1],pImg[0],9);
WorkCanvusToWindow();
}
void CImageNView::OnDistance()
{
CString str1;
Distancing(pImg[1]);
SetDefaultPalette(pImg[1]);
str1.Format(" 的索引图像");
WriteTitle(pImg[1],m_FileName,str1);
WorkCanvusToWindow();
}
void CImageNView::MorphologicA(int n)
{
struct IMAGEPARAMENT P;
ShowCursor(FALSE);
GetImageParament(pImg[1],&P);
if (P.nBitCount==1) {
LowTypeToIndex(pImg[1],pImg[1]);
ColorToGray(pImg[1],pImg[1]);
}
Morphologic(pImg[2],pImg[1],n);
WorkCanvusToWindow();
ShowCursor(TRUE);
}
void CImageNView::OnErosion()
{
MorphologicA(1);
}
void CImageNView::OnDilation()
{
MorphologicA(2);
}
void CImageNView::OnInnerBoundary()
{
MorphologicA(3);
}
void CImageNView::OnOuterBoundary()
{
MorphologicA(4);
}
void CImageNView::OnMorphologyBoundary()
{
MorphologicA(5);
}
void CImageNView::OnAreaSkeleton()
{
MorphologicA(6);
}
void CImageNView::OnOpening()
{
MorphologicA(7);
}
void CImageNView::OnClosing()
{
MorphologicA(8);
}
void CImageNView::OnMorphologyThin()
{
MorphologicA(9);
}
void CImageNView::OnPatternThin()
{
MorphologicA(10);
}
void CImageNView::OnGrayErosion()
{
GMorphologic(pImg[2],pImg[1],1);
WorkCanvusToWindow();
}
void CImageNView::OnGrayDilation()
{
GMorphologic(pImg[2],pImg[1],2);
WorkCanvusToWindow();
}
void CImageNView::OnGrayOpenning()
{
GMorphologic(pImg[2],pImg[1],3);
WorkCanvusToWindow();
}
void CImageNView::OnGrayClosing()
{
GMorphologic(pImg[2],pImg[1],4);
WorkCanvusToWindow();
}
void CImageNView::OnGrayGrads()
{
GMorphologic(pImg[2],pImg[1],5);
WorkCanvusToWindow();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -