在 opencv 中从每行矩阵中减去一个向量
Subtract a vector from each row of matrix in opencv?
我有一个矩阵或Mat对象(比如M),还有一个行向量,也是一个Mat对象(比如V)。我想从每行 M 中减去 V。除了自己编写自定义代码之外,我在 openCV 中找不到任何合适的方法来做到这一点。有什么帮助吗?
逐行减号怎么样:
for (int r = 0; r < M.rows; ++r) {
M.row(r) = M.row(r) - V;
}
没有
内置函数可以满足您想要的内容,但是这些选项呢:
cv::Mat1f M = cv::Mat1f::eye( 3, 3 );
cv::Mat1f V = ( cv::Mat1f( 3, 1 ) << 1.f, 2.f, 3.f );
// 1. Using a for-loop.
//
// More code but uses less memory.
const cv::Size size = M.size();
cv::Mat1f result1 = cv::Mat1f::zeros( 3, 3 );
for ( int y = 0; y < size.height; ++y )
{
cv::Rect rect( 0, y, size.width, 1 );
result1( rect ) = M( rect ) - V.t();
}
// 2. Avoiding a for-loop like in Matlab
//
// Less code but uses more memory.
cv::Mat1f ones = cv::Mat1f::ones( 3, 1 );
cv::Mat1f result2 = M - ones * V.t();
std::cout << "M = " << std::endl << M << std::endl;
std::cout << "V = " << V.t() << std::endl;
std::cout << "result1 = " << std::endl << result2 << std::endl;
std::cout << "result2 = " << std::endl << result2 << std::endl;
相关文章:
- 给定一个向量,如何找到该向量的所有子集和的原始索引
- 为什么一个向量上的多线程操作很慢
- 将一个向量插入另一个向量的某个位置
- 将指向给定子类的指针从一个向量复制到另一个向量
- C++ STD 函数运算符:有没有一种方法可以通过函数将一个向量映射到另一个向量上?
- 将向量之间的数字放在另一个向量之间<vector>>如果两个数字的差值为 1
- 如何在不复制的情况下将一个向量移动到另一个向量中
- 使用 std::transform 将向量向量 (a) 添加到另一个向量向量 (b)
- 如何按另一个向量的方向调整一个向量?
- 将字符向量复制到另一个向量
- 制作一对共享指针并推送一个向量
- 你能把一个向量<int64>投射到一个向量<uint8>吗
- 大家好,当一个类有一个向量作为它的数据成员时,为什么它的大小总是24?
- 为什么我们需要在优先级队列声明中添加一个向量作为参数?
- 如何将所有指针从一个向量移动到另一个向量?
- 将一个向量映射到不同的对,即使向量映射到每对时是不同的?
- 生成一个类Name_class并将两种数据类型存储在一个向量中
- 使用步骤c++构建一个向量
- 如何从另一个向量中的另一个第一元素减去向量中的第一元素
- 将一个向量对放在一个无序映射与一个映射中