gpt4 book ai didi

android - 如何在 OpenCV 中实现 signum 函数?

转载 作者:行者123 更新时间:2023-12-02 16:47:20 28 4
gpt4 key购买 nike

dst = signum(src)函数设置src中所有正元素的值至1 , 并且所有负元素的值为 -1 .

但是,似乎无法实现 signum()通过应用 OpenCV 函数 threshold() .我不想遍历 src也不是,因为它效率低下。

最佳答案

我不知道你使用的是哪种语言,但是在 OpenCV C++ 中,signum 函数可以实现如下:

Mat signum(Mat src)
{
Mat dst = (src >= 0) & 1;
dst.convertTo(dst,CV_32F, 2.0, -1.0);
return dst;
}

当然,返回的矩阵将具有浮点或有符号类型来存储 -1 的值。

更新:

先前的实现仅根据输入值返回 1 或 -1,但根据 signum定义,0 应该在输出中保持为 0。所以从 this answer 获得引用,标准的signum函数可以使用OpenCV实现如下:
Mat signum(Mat src)
{
Mat z = Mat::zeros(src.size(), src.type());
Mat a = (z < src) & 1;
Mat b = (src < z) & 1;

Mat dst;
addWeighted(a,1.0,b,-1.0,0.0,dst, CV_32F);
return dst;
}

关于android - 如何在 OpenCV 中实现 signum 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25540559/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com