在OpenCv Mat中箝位值的最有效方法
Most efficient way to clamp values in an OpenCv Mat
我有一个OpenCv Mat
,我将用于逐像素重新映射,称为remap
,它有CV_32FC2
元素。
其中一些元素可能超出了重新映射的允许范围。所以我需要把它们夹在Point2f(0, 0)
和Point2f(w, h)
之间。用OpenCv 2.x完成这个任务的最短或最有效的方法是什么?
这里有一个解决方案:
void clamp(Mat& mat, Point2f lowerBound, Point2f upperBound) {
vector<Mat> matc;
split(mat, matc);
min(max(matc[0], lowerBound.x), upperBound.x, matc[0]);
min(max(matc[1], lowerBound.y), upperBound.y, matc[1]);
merge(matc, mat);
}
但我不确定这是否是最短的,或者如果分割/合并是有效的。
尝试拆分,使用cvThreshold
然后合并。您也可以使用cvSetImageCOI
来避免分裂。我不确定阈值代码是否支持COI。
您可能想要分析两个版本并比较它们的性能。我有一种感觉,它会做同样的事情。
相关文章:
- 在C++中初始化向量映射的最有效方法
- 将此布尔值传递给此函数的最有效方法是什么?
- 比较C++变量的最有效方法
- 在 c++ 中解决段树以外的范围查询的有效方法是什么?
- 存储变量的更有效方法是什么?
- 确保套装新鲜度的有效方法
- 当映射包含字符串向量作为值时,从值中获取键的有效方法
- 映射唯一值和重复值的有效方法.可以访问键或值的位置
- 在C++事务之间存储大量字符数据的有效方法
- 在unordered_multimap中精确迭代一次每个键的有效方法
- 一种将 Dart 中的字节数据转换为 C++ 中的无符号字符*的有效方法?
- 检查两个向量是否并行的最有效方法
- 从浮点数中删除小数部分但保留类型的有效方法
- 传递非泛型函数的最有效方法是什么?
- 按升序打印矢量的所有元素直到它为空而没有重复项的最有效方法是什么?
- 创建字符串数组的有效方法
- 返回一个引用C++中另一个类对象的对象的有效方法
- C++去除前x个元素的有效方法,在不改变向量大小的情况下将第x+1个元素推到第一个
- 将一种数据类型的向量复制到同一数据类型的结构向量中的有效方法是什么
- 从std::map值中获取密钥的有效方法