昨晚上到今天成果不小,至少做出了大致的系统程序结构框架:
(前两天是处理如何外部载入图片,然后显示在界面上),大体结构是,1.先读取图片,显示在界面,2.然后设置索引文件目录(即图像索引库),3.然后递归查找指定图像目录的 指定后缀的文件,4.再一个个的调用函数 与原始图像进行对比处理,得到每个的相似度。对于相似度符合一定阈值的,将图像句柄添加到ImageList中,最后在一次性将Imagelist添加到界面绑定的ListBox Control 控件变量中,并显示。
大体思路是这样,不过实现过程中的确遇到了不少问题,因为我本是对MFC菜鸟级别,所以想实现什么功能都是上网搜索,然后改成适用于自己的代码,左拼右凑当然一大堆问题。
1.设置索引文件目录,这里涉及到个线程问题 ,(我也不太明白为什么那个作者要重新设置线程),不过作为引用者,我的发现与遇到的问题是:新建线程(相关代码 CWinThread* pThreadAsu = AfxBeginThread(DoRecursive, this);)时候调用的函数:是静态函数(DoRecursive一定要声明成 UINT __cdecl CSearchImgDlg::DoRecursive( LPVOID lpParam )形式)。而且在静态函数中,一定必须调用静态变量,否则会报错【error C2597对非静态成员C