bitwise_not(roi, roi);
backprojMode
#include "opencv2/core/utility.hpp" // 导入OpenCV的核心工具库
#include "opencv2/video/tracking.hpp" // 导入OpenCV的视频跟踪功能库
#include "opencv2/imgproc.hpp" // 导入OpenCV的图像处理库
#include "opencv2/videoio.hpp" // 导入OpenCV的视频输入/输出库
#include "opencv2/highgui.hpp" // 导入OpenCV的高层GUI图形界面库
#include <iostream> // 导入标准输入输出流库
#include <ctype.h> // 导入字符处理库
using namespace cv; // 使用cv命名空间简化代码
using namespace std; // 使用std命名空间简化代码
Mat image; // 声明一个Mat类型的变量,用于存储图像
// 以下是一些全局变量,用于处理鼠标选择的对象及跟踪参数设置
bool backprojMode = false; // 是否使用反向投影模式
bool selectObject = false; // 是否选择了对象
int trackObject = 0; // 跟踪对象的标志
bool showHist = true; // 是否显示直方图
Point origin; // 原点位置,用作画框时的参考点
Rect selection; // 用户用鼠标选择的区域
int vmin = 10, vmax = 256, smin = 30; // HSV颜色空间中的最小值、最大值及饱和度最小值
// onMouse是回调函数,当鼠标事件发生时调用
static void onMouse( int event, int x, int y, int, void* )
{
if( selectObject ) // 如果选择了对象
{
selection.x = MIN(x, origin.x); // 选择框的x坐标
selection.y = MIN(y, origin.y); // 选择框的y坐标
selection.width = std::abs(x - origin.x); // 选择框的宽度
selection.height = std::abs(y - origin.y); // 选择框的高度
//将selection矩形裁剪(clip)到图像的边界内
selection &= Rect(0, 0, image.cols, image.rows); // 确保选择框不超出图像范围
}
switch( event )
{
case EVENT_LBUTTONDOWN: // 鼠标左键按下事件
origin = Point(x,y); // 记录原点位置
selection = Rect(x,y,0,0); // 初始选择框
selectObject = true; // 设置选择对象为true
break;
case EVENT_LBUTTONUP: // 鼠标左键抬起事件
selectObject = false; // 设置选择对象为false