ZHO*_*HOU 0 math android opencv
该dst = signum(src)
函数将所有正元素的值设置为src
to 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;
}
Run Code Online (Sandbox Code Playgroud)
当然,返回的矩阵将具有浮点或有符号类型以存储值-1.
前一个实现仅返回1或-1,具体取决于输入值,但根据signum定义,0应在输出中保持为0.因此,从这个答案中获得参考,标准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;
}
Run Code Online (Sandbox Code Playgroud)