问题描述:在测试目标跟踪算法时,需要选择不同区域作为目标,进行目标跟踪,测试目标跟踪的效果。

解决思路:

1.OpenCV中提供了鼠标交互控制,利用setMouseCallback()给固定的窗口设置鼠标回调函数。

2.在鼠标回调函数中,选择感兴趣区域。

代码实现如下,将感兴趣区域封装在MouseSelect类中,提供选择点和矩形框两种模式。

 1 #pragma once
 2 #ifndef __MOUSESELECT_H__
 3 #define __MOUSESELECT_H__
 4 
 5 #include <opencv2/opencv.hpp>
 6 #include <iostream>
 7 
 8 #define MAX_OBJECTS    10
 9 using namespace cv;
10 using namespace std;
11 typedef struct MouseSelectParams
12 {
13     vector<Point> pts;        //Points of selected
14     char        *win_name;
15     Mat            *image;        
16     unsigned int mode;        //1 Point,2 Rect
17     int             n;            // selected object number
18 }MouseSelectParams;
19 
20 void on_mouse(int event,int x,int y,int flags,void *param);
21 class MouseSelect
22 {
23 public:
24     MouseSelect();
25     ~MouseSelect();
26 
27     void select_rect(Mat &frame);
28     void select_point(Mat &frame);
29 
30     vector<Point> vPoints;
31     vector<Rect> vRects;
32     unsigned int obj_selected;
33 private:
34     int get_rects(Mat &frame);
35     int get_points(Mat &frame);
36 
37 };
38 #endif
View Code

相关文章:

  • 2022-12-23
  • 2021-10-14
  • 2021-12-18
  • 2021-08-28
  • 2022-12-23
  • 2021-12-15
  • 2021-12-10
  • 2021-12-05
猜你喜欢
  • 2021-09-05
  • 2022-12-23
  • 2021-08-31
  • 2021-09-16
  • 2022-12-23
  • 2022-02-13
  • 2021-08-22
相关资源
相似解决方案