WIL (Visual C++ 2005 MFC ) WIL (Visual C++ 2005) Visual C++ 2005 Visual C++ WIL MFC 0 Visual C++ 2005 WIL Visual C++ WIL 1. Microsoft Visual Studio 2005 2.
3. VC 4. WIL EVC C: Program Files FAST WIL Include C: Program Files FAST WIL EVC 5. WIL lib C: Program Files FAST WIL Lib
1 MFC 1. (F) -> (N) -> (P) 2. Visual C++ (T) MFC OK Filter Filter OK
2 1. IDD_FILTER_DIALOG 2. Picture Control IDD_FILTER_DIALOG Picture Control 3. Picture Control ID IDC_STATIC_IMAGE_VIEW
4. Picture Control (B) CStatic m_dummy
3 GUI Picture Control ID IDC_BUTTON_LOAD IDC_BUTTON_FILTER_EXEC
4 WIL CFilterDlg FilterDlg.h #pragma once #include "FVCLbasic.h" #include "FVCLpng.h" #include "FVCLjpg.h" #include "EVCbasic.h" // // png // jpeg // FVCLbasic.h FVCLpng.h PNG / PNG FVCLjpg.h JPEG / JPGE PNG JPEG libjpeg libpng WIL EVCbasic.h CEvView CEvView 5 CFilterDlg FilterDlg.h
afx_msg HCURSOR OnQueryDragIcon(); DECLARE_MESSAGE_MAP() public : FVCL::CFvImage m_srcimage; // FVCL::CFvImage m_dstimage; CEvView // public : FVCL::CFvImage m_srcimage; // FVCL::CFvImage m_dstimage; // CEvView m_view; //
6 WIL MFC OnInitDialog() WIL CFilterDlg::OnInitDialog() WIL FVCL::InitVisionLibrary(); CFilterDlg::OnInitDialog() BOOL CFilterDlg::OnInitDialog() { // // TODO: // WIL FVCL::InitVisionLibrary(); CEvView m_view; CEvView MFC OnInitDialog m_view m_view Picture Box(CStatic m_dummy;) BOOL CFilterDlg::OnInitDialog() { // // TODO: // WIL FVCL::InitVisionLibrary() // EVC FVCL::EVCbasic::DLLChainResource( NULL ); // View CRect rect; m_dummy.getwindowrect( &rect ); ScreenToClient( &rect ); m_view.create( IDC_STATIC_IMAGE_VIEW, rect, this );
EVCbasic.dll DLLChainResource EVCbasic NULL EVCbasic 7 CFilterDlg Load void CFilterDlg::OnBnClickedButtonLoad() BMP/JPEG/PNG m_srcimage
void CFilterDlg::OnBnClickedButtonLoad() { FVCL::CFvImageFile* pimagefile=null; // CFileDialog dlg(true, _T("bmp"), NULL, OFN_FILEMUSTEXIST OFN_HIDEREADONLY, _T("Imagefile(*.bmp,*jpg,*png) *.bmp;*.jpg;*.png All files(*.*) *.* "), this); if( IDOK == dlg.domodal() ) { // CString ext = dlg.getfileext(); // if( 0==ext.CompareNoCase( _T("BMP") )) pimagefile = new FVCL::CFvImageFileBmp; // BMP else if( 0==ext.CompareNoCase( _T("JPG") )) pimagefile = new FVCL::CFvImageFileJpg; // JPEG else if( 0==ext.CompareNoCase( _T("PNG") )) pimagefile = new FVCL::CFvImageFilePng; // PNG else { MessageBox( _T(" ") ); return; }
// Load if(!pimagefile->load( dlg.getfilename(), &m_srcimage ) ) MessageBox( _T(" ") ); else { // m_view.setimage( &m_srcimage ); m_view.redraw( false ); } // // ( == ) // ( > ) // (!= ) // m_dstimage.setsize( m_srcimage.gethorzsize(), m_srcimage.getvertsize(), FVCL::ImageType::UC8, 1 ); // 8bit } } // if(pimagefile) delete pimagefile; CEvView::SetImage() ReDraw() _T() MBCS Unicode 8 (FVCL::Filter::CFvSobelFilter) Filter
void CFilterDlg::OnBnClickedButtonFilterExec() Filter WIL Execute() Execute() SetSrcImage(), SetDstImage() IsValid() SetSrcImage(), SetDstImage() void CFilterDlg::OnBnClickedButtonFilterExec() { // FVCL::Filter::CFvSobelFilter SobelFilter; (1) // // m_srcimage.setwindow( 0, 0, m_srcimage.gethorzsize(), m_srcimage.getvertsize() ); (2) m_dstimage.setwindow( m_srcimage.getwindow() ); (3) // SobelFilter.SetSrcImage( 0, &m_srcimage ); (4) // SobelFilter.SetDstImage( 0, &m_dstimage ); (5) // SobelFilter.SetCalcMode( FVCL::Filter::SobelCalcMode::XYMode ); (6) (1) (2) GetHorzSize GetVertSize (3) m_srcimage
(4) (5) (6) if( SobelFilter.IsValid() ) { // if( SobelFilter.Execute() ) { // m_view.setimage( &m_dstimage ); m_view.redraw( false ); } else { CString str; // str.format( _T("CFvSobelFilter Execute() Error (%d)"), SobelFilter.GetErrorCode() ); // MessageBox( str, _T("Error") ); } } else { CString str; str.format( _T("CFvSobelFilter.IsValid() (%d)"), SobelFilter.GetErrorCode() ); MessageBox( str, _T("Error") ); } }
9 Load Gray Filter FVCL:: ImageType::RGB24 FVCL::ImageType::RGB32 FVCL::Filter::CFvSobelFilter FVCL::ImageType::UC8, FVCL::ImageType::S16, FVCL::ImageType::US16, FVCL::ImageType::D64
RGB24 RGB32 FVCL::Conversion::CFvGrayScale FVCL::CFvImage::GetImageType()