我有一个名为“myClass”的类,它返回“cv::Scalar”类型,我想这样做:
cv::Scalar myValue;
for ( myValue > myClass (i,j) )
....
但是“for”行中的比较部分给出了错误,说“没有运算符 > 匹配这些操作数”。有人可以帮助我吗?谢谢你。
我有一个名为“myClass”的类,它返回“cv::Scalar”类型,我想这样做:
cv::Scalar myValue;
for ( myValue > myClass (i,j) )
....
但是“for”行中的比较部分给出了错误,说“没有运算符 > 匹配这些操作数”。有人可以帮助我吗?谢谢你。
为了完成智禄的回答:
如果要比较 Scalar 的元素,则应执行以下操作:
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
{
}
无论如何,如果您只想要一个值,那么使用 Scalar 是没有意义的。还要注意,你需要一个适当的 for 循环表达式,比如
for(i = 0; i < 0; i++){}
标量是一个四双类型元素数组。您可以在这种结构中存储任意数量的元素(双精度类型)。因此,您不能像 int 类型那样直接将 Scalar 的一个实例与另一个实例进行比较。
如果没有运算符来比较两个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
作为一个例子,但是你可以在任何你想要的地方定义操作符,只要它在执行比较的地方是可见的。