gpt4 book ai didi

c++ - Opencv cv::垫公差区间

转载 作者:太空宇宙 更新时间:2023-11-03 22:33:45 25 4
gpt4 key购买 nike

有没有办法确定两个 cv::Mat 矩阵的元素是否在彼此可接受的公差范围内?

即如果 A = [a, b, c, d, e, f],并且 B = [a ± 5%, b ± 5%, c ± 5%, d ± 5%, e ± 5%, f ± 5% ]

我认为 compare() 函数可能会有用,但我不确定如何实现它。

最佳答案

据我所知,OpenCV 似乎没有任何可以执行此操作的内置函数,但是考虑到它们公开了迭代器,敲一些东西应该非常简单:

template <typename T>
bool within_tolerance(const cv::Mat& m1, const cv::Mat& m2, const T& tolerance)
{
auto compare = [](const T& v1, const T& v2) -> bool
{ return std::abs(v1 - v2) < tolerance * v1; };
return std::equal(m1.begin<T>(), m1.end<T>(), m2.begin<T>(), compare);
}

编辑:我对比较没有认真考虑;以上仅适用于无符号值。这可以用类似 v2 > (1 - tolerance) * v1 && v2 < (1 + tolerance) * v1 的东西来修复.

关于c++ - Opencv cv::垫公差区间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13909044/

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