【问题标题】:How to do an exclusive or (XOR) for void functions in openCV C++?如何在 openCV C++ 中对 void 函数进行异或(XOR)?
【发布时间】:2016-09-29 00:41:42
【问题描述】:

我有一个项目,它使用CascadeClassifer 检测头部检测并使用 openCV 中的 Tracker lib 进行跟踪。如何对 void 函数进行异或(XOR)?因为我使用 void 函数将检测与跟踪分开。它将如何检测头部然后开始跟踪,如果开始跟踪则停止检测?

【问题讨论】:

  • 请考虑重写这个问题,以英语为母语的人不容易理解。

标签: c++ opencv visual-c++ tracking cascade-classifier


【解决方案1】:

如果您使用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 对你没有帮助,因为

  • 无论如何您都需要计算检测(以获得比较结果)
  • 您不知道是否应该进行检测或跟踪,因为无论哪种方式都是正确的。

我建议你在你的类中添加一个布尔变量bool foundRectangle,它会在真假之间切换。如果您需要检测,则为假,如果检测发现至少一个应该跟踪的矩形,则为真。

if(foundRectangle){
    //track();
}
else {
    //detect();
}

【讨论】:

    猜你喜欢
    • 2021-08-02
    • 2020-01-17
    • 2021-12-13
    • 1970-01-01
    • 2014-02-08
    • 1970-01-01
    • 1970-01-01
    • 2012-05-26
    • 1970-01-01
    相关资源
    最近更新 更多