首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将"Mat >= int“语句从c++转换为C#

如何将"Mat >= int“语句从c++转换为C#
EN

Stack Overflow用户
提问于 2019-05-07 17:18:45
回答 1查看 615关注 0票数 2

我刚刚开始使用OpenCVSharp,并试图将一些OpenCV示例程序转换为C#。我不知道如何从squares.cpp转换这一行

gray = gray0 >= (l + 1) * 255 / N;

这一行给出了错误

运算符'>=‘不能应用于'Mat’和'int‘OpenCVSharpTest类型的操作数

graygray0都是Mat实例。lNint

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-07 23:45:13

首先,理解表达式的作用是很重要的。

代码语言:javascript
运行
复制
cv::Mat gray0; // Somehow this is populated with a grayscale image
int N = 11;

for( int l = 1; l < N; l++ ) {
    cv::Mat gray = gray0 >= (l + 1) * 255 / N;
    // more processing
}

表达式使用MatExpr operator>= (const Mat &a, double s),它是一个执行Mat与标量的向量化比较的矩阵表达式

比较:A cmpop BA cmpop alphaalpha cmpop A,其中cmpop>>===!=<=<之一。比较的结果是一个8位的单通道掩码,其元素被设置为255 (如果特定的元素或一对元素满足条件)或0。

基本上:

对于图像中的所有(x,y):阈值= (l + 1) * 255 /N如果(gray0(x,y) >=阈值):gray(x,y) =255个其他灰色(x,y) =0

这基本上是一个阈值操作,可以很容易地转换为使用cv::threshold函数。

OpenCVSharp似乎将许多C++ API操作符映射到Mat类的成员函数中。具体来说,Mat.GreaterThanOrEqual似乎与所使用的运算符相匹配。

可选的C++函数cv::threshold映射到Mat.Threshold。在这种情况下,您将需要使用阈值方法THRESH_BINARY,因为它可以实现>而不是>=,因此需要适当地抵消阈值。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56027610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档