如何在 openCV C++ 中对 void 函数进行异或 (XOR)?
How to do an exclusive or (XOR) for void functions in openCV C++?
我有一个项目使用 CascadeClassifer
检测头部检测并使用 openCV 中的 Tracker 库进行跟踪。如何做 void 函数的异或(XOR)?因为我使用 void 函数将检测与跟踪分开。它将如何检测头部,然后开始跟踪,如果开始跟踪,检测将停止?
如果您使用 void CascadeClassifier::detectMultiScale(const Mat& image, vector<Rect>& objects, double scaleFactor=1.1, int minNeighbors=3, int flags=0, Size minSize=Size(), Size maxSize=Size())
在图像中查找对象,则不需要对 void 值进行异或运算。检测结果见vector<Rect>& objects
。如果矢量包含任何矩形,则检测成功。
如果检测到某些东西,那么您希望停止检测并跟踪结果。像 if(detection^tracking)
这样的 XOR 对你没有帮助,因为
- 无论如何你都需要计算检测(以获得比较结果)
- 您不知道是否应该进行检测或跟踪,因为无论哪种方式都是如此。
我建议您向 class 添加一个布尔变量 bool foundRectangle
,它会在 true 和 false 之间切换。如果您需要检测,则为 false;如果检测发现至少一个应该跟踪的矩形,则为 true。
if(foundRectangle){
//track();
}
else {
//detect();
}
我有一个项目使用 CascadeClassifer
检测头部检测并使用 openCV 中的 Tracker 库进行跟踪。如何做 void 函数的异或(XOR)?因为我使用 void 函数将检测与跟踪分开。它将如何检测头部,然后开始跟踪,如果开始跟踪,检测将停止?
如果您使用 void CascadeClassifier::detectMultiScale(const Mat& image, vector<Rect>& objects, double scaleFactor=1.1, int minNeighbors=3, int flags=0, Size minSize=Size(), Size maxSize=Size())
在图像中查找对象,则不需要对 void 值进行异或运算。检测结果见vector<Rect>& objects
。如果矢量包含任何矩形,则检测成功。
如果检测到某些东西,那么您希望停止检测并跟踪结果。像 if(detection^tracking)
这样的 XOR 对你没有帮助,因为
- 无论如何你都需要计算检测(以获得比较结果)
- 您不知道是否应该进行检测或跟踪,因为无论哪种方式都是如此。
我建议您向 class 添加一个布尔变量 bool foundRectangle
,它会在 true 和 false 之间切换。如果您需要检测,则为 false;如果检测发现至少一个应该跟踪的矩形,则为 true。
if(foundRectangle){
//track();
}
else {
//detect();
}