由于opencv的界面和mfc界面交互性不是很好,所以将他们融合时会出现很多问题,我通过查阅资料,纠结了两天终于能够初步实现mfc环境下应用opencv的cvSetMouseCallback函数实现图片的裁剪保存。
常见问题:
1.使用时出现error C2664: 'cvSetMouseCallback' : cannot convert parameter 2 from 'void (__cdecl *)(int,int,int,int)' to 'CvMouseCallback'
2.出现“cvSetMouseCallback中的on_mouse函数调用缺少参数列表”
说明:
函数void cvSetMouseCallback( const char* window_name, CvMouseCallback on_mouse, void* param=NULL);window_name 窗口的名字。on_mouse 指定窗口里每次鼠标事件发生的时候,被调用的函数指针。由于第一个参数是opencv的窗口的名字,而不是mfc环境下的对话框,所以在这儿它们的交互就出现了困难。
针对问题1,请参见“chenhezhuyan的专栏”《MFC下使用cvSetMouseCallback()的小结》。
针对问题2,请接着往下看。
我的做法:
首先创建一个mfc基于对话框的工程,选择“在静态库中使用mfc”,如果选择动态链接库的话可能会造成opencv配置后不能正常工作,接下来配置opencv(关于配置opencv请在网上自行查找)。