我有一个名为"myClass"的类,它返回"cv::Scalar"类型,我想这样做:

cv::Scalar myValue; 
for ( myValue > myClass (i,j) )
.... 

但是"for"行中的比较部分给出了错误,说"没有运算符>匹配这些操作数"。有人能帮我吗?谢谢!.

有帮助吗?

解决方案

如果没有运算符来比较两个 cv::Scalar 您可以定义它的元素:

#include "OpenCVStuff.h"

// Custom operator to compare cv::Scalar class...
bool operator >(const cv::Scalar &a, const cv::Scalar &b)
{
    bool Result = false;
    // Do whatever you think a Scalar comparison must be.
    return Result;
}

int main(int argc, char **argv)
{
    cv::Scalar myValue; 

    // Assuming myClass (i,j) returns a cv::Scalar
    for ( myValue > myClass (i,j) )
    {
        // Do something...
    }

    return 0;
}

这样做可以定义方式二 cv::Scalar 比较时不会打扰 cv::Scalar 类本身。

我已经把它放进去了。 main.cpp 只是作为一个例子,但是您可以在任何您想要的地方定义运算符,只要它在执行比较的地方可见。

其他提示

为了完成zhi lu的答案:

如果要比较标量的元素,则应执行下一步:

cv::Scalar scalar(myValue);   //here you assign a value to the element (0,0)
for (scalar.val[0,0] > myClass (i,j)) // access the elment of Scalar
{
}
.

无论如何,如果您只想要单个值,则使用标量就没有点。另请注意,您需要一个适当的循环表达式,如

for(i = 0; i < 0; i++){}
.

标量是四双型元素数组。您可以在这种结构中存储任何数量的元素(双重类型)。因此,您无法将标量的一个实例与另一个直接类似于int类型的实例进行比较。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top