如何在OpenCV中比较标量
How to compare scalars in OpenCV
我有一个名为"myClass"的类,它返回"cv::Scalar"类型,我想这样做:
cv::Scalar myValue;
for ( myValue > myClass (i,j) )
....
但是"for"行中的比较部分给出了错误,说"没有运算符>匹配这些操作数"。有人可以帮助我吗?谢谢。
为了完成志璐的回答:
如果你想比较标量的一个元素,你应该做下一步:
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++){}
Scalar 是一个四双精度类型元素数组。您可以在这种结构中存储任意数量的元素(双精度类型)。因此,您不能像 int 类型那样直接将标量的一个实例与另一个实例进行比较。
如果没有运算符来比较两个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
中只是作为一个例子,但只要在执行比较的位置可见,您就可以在任何地方定义运算符。
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 为什么比较运算符如此快速
- 我可以使用 g++ 进行三种比较 (<=>) 吗?
- 比较字符数组
- 将模板化的类型与C++中的某些类/类型进行比较
- C++自定义比较函数
- 如何比较自定义类的std::变体
- 多个If语句与使用逻辑运算符计算条件的单个语句的比较
- std::设置自定义比较器
- 布尔比较运算符是如何在C++中工作的
- C++将目录中的所有文件与::filesystem进行比较
- 为什么 std::optional::operator=(U&&) 要求你是非标量类型?
- shell排序中的交换和比较
- 如何在C++中比较两个char数组
- catch框架有没有办法比较流或文件
- 从文件中读取多个字节,并将它们存储在C++中进行比较
- 智能指针作为无序映射键,并通过引用进行比较
- 如何在OpenCV中比较标量
- 比较OpenCV Mat与标量元素