MFC中使用cvSetMouseCallback对图片进行裁剪

本文介绍如何在MFC环境下使用OpenCV的cvSetMouseCallback函数处理鼠标事件,实现在对话框中裁剪并保存图片。解决在MFC与OpenCV交互时遇到的问题,如参数类型不匹配和函数调用缺失参数列表。详细步骤包括创建MFC对话框工程,配置OpenCV,定义cvMouseCallback静态函数,并处理鼠标事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       由于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请在网上自行查找)。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值