0
dst = signum(src)
函數將src
中的所有正元素的值設置爲1
,將所有負元素的值設置爲-1
。如何在OpenCV中實現signum函數?
但是,似乎不可能通過應用OpenCV函數threshold()
來實現signum()
函數。我也不想穿越src
,因爲它效率低下。
dst = signum(src)
函數將src
中的所有正元素的值設置爲1
,將所有負元素的值設置爲-1
。如何在OpenCV中實現signum函數?
但是,似乎不可能通過應用OpenCV函數threshold()
來實現signum()
函數。我也不想穿越src
,因爲它效率低下。
我不知道你正在使用的語言,但在OpenCV的C++,符號函數可以實現如下:
Mat signum(Mat src)
{
Mat dst = (src >= 0) & 1;
dst.convertTo(dst,CV_32F, 2.0, -1.0);
return dst;
}
中 - 當然,返回的矩陣將有浮點或符號的類型存儲-1的值。
以前的實現僅僅1或返回根據輸入的值,但根據signum定義,0應該在輸出保持0 -1。因此從this answer得到參考,標準符號函數可以用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;
}