问题:
在进行特征学习时,经常需要将大量的图像提取出特征点(关键点),因此,想到在显示图像的时候,使用鼠标的双击操作来确定 关键点的位置。
操作要点:
1显示图像
2鼠标双击事件处理:左键双击,增加鼠标所在的点为新的关键点;右键双击,删除最近添加的关键点,与双击时的鼠标位置无关。
3实时显示:显示最新添加的点
4提取的关键点导出
代码:
#include "opencv2/opencv.hpp"
using namespace cv;
using namespace std;
#define CONFIRM_PT_NUM (20)
struct ConfirmParam {
string window; // 窗口名称
Mat* image;
Point points[CONFIRM_PT_NUM];
int point_idx;
};
void on_mouse_cb_confirm_pt (int event, int x, int y, int flags, void* userdata) {
ConfirmParam* param = (ConfirmParam *) userdata;
Mat display;
param->image->copyTo (display);
switch (event) {
case CV_EVENT_LBUTTONDBLCLK: { // 左键双击:增加点
if (param->poin