图像分割工作的总结(一)

做了两个月的图像分割,主要工具为:MFC(VS2010)、opencv2.3.1、ITK4.3.1、VTK5.8.0,现做如下知识性的总结


一、配置问题

  1.opencv2.3.1 下载已编译的库,设置一下计算机的环境变量,然后直接在VS中包含一下库文件即可。

  2.ITK和VTK使用CMake编译


二、程序(MFC)

1. 打开文件及文件夹,定制对话框

    (1)打开文件对话框,获取选择项的路径 CFileDialog

         CString filename;

         CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,NULL,NULL,0,TRUE);

          if(IDOK==dlg.DoModal())

                {

                   filename=dlg.GetPathName();

                 }


     (2)打开文件夹对话框

              MFC中没有现成的类,需要定制文件夹对话框,封装函数如下:

          CString GetFolderPath()

          {

LPITEMIDLIST rootLoation;
SHGetSpecialFolderLocation( NULL, CSIDL_DESKTOP, &rootLoation );

 //配置对话框
 CString strPath = "";
 BROWSEINFO bInfo;
 ZeroMemory(&bInfo, sizeof(bInfo));
 bInfo.lpszTitle = _T("请选择路径: ");
 bInfo.ulFlags = BIF_RETURNONLYFSDIRS;  

bInfo.pidlRoot = rootLoation; // 文件夹对话框之根目录,不指定的话则为我的电脑
  
 //显示对话框
 LPITEMIDLIST lpDlist; //用来保存返回信息的IDList
 lpDlist = SHBrowseForFolder(&bInfo) ; //显示选择对话框
 if(lpDlist != NULL)  //用户按了确定按钮
 {
  TCHAR chPath[255]; //用来存储路径的字符串
  SHGetPathFromIDList(lpDlist, chPath);//把项目标识列表转化成字符串
  strPath = chPath; //将TCHAR类型的字符串转换为CString类型的字符串
 }
 return strPath;

          }

              

        详解:

LPITEMIDLIST 表示ITEMIDLIST结构,而非指向ITEMIDLIST结构的指针。item id是一个结构体,它等价于文件或文件夹名称的功能,通常并不单独使用,而是

                        存在一个item id列表.

HRESULT SHGetSpecialFolderLocation(      
    HWND hwndOwner,
    int nFolder,
    PIDLIST_ABSOLUTE *ppidl
);             返回一个指向ITEMIDLIST结构的指针,存放于ppidl中
 
 BROWSEINFO 包含SHBrowseForFolder()函数所需信息的结构体,并返回用户所选择的文件夹信息
SHBrowseForFolder(&bInfo)显示一个能使用户选择Shell文件夹的对话框,并返回ITEMIDLIST结构体指针
 
(3)定制自己的对话框
   创建自己的对话框类,在对话框类中实现自己的函数。调用DoModal显示模态对话框,或另一个函数显示非模态对话框
 

 


          


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值