c++ - 如何使用 opencv 库将 3D 矩阵的元素置零?

标签 c++ opencv matrix

我正在努力使用 opencv 对 3D 矩阵的元素进行归零。 我可以按以下方式将二维矩阵中的所有元素归零:

meta = new Mat(Mat::zeros(cluster,3,CV_32S));

我尝试使用类似的方法在 3D 矩阵中用 0 初始化元素,但失败了。

block = new Mat(Mat::zeros(3,dim,CV_32F));

错误信息:

1>MatrixOp.obj : error LNK2019: unresolved external symbol "public: static class cv::MatExpr __cdecl cv::Mat::zeros(int,int const *,int)" (?zeros@Mat@cv@@SA?AVMatExpr@2@HPBHH@Z) referenced in function "public: __thiscall MatrixOp::MatrixOp(char *)" (??0MatrixOp@@QAE@PAD@Z)

我有最后一种方法来初始化矩阵。遍历矩阵,设置元素值为0。不过看起来有点费力。

for(int i=0;i<value_num;i++)
    for(int j=0;j<frame_no;j++)
        for(int k=0;k<cluster;k++)
            block->at<float>(i,j,k) = 0;

谁能给我一个更好的主意? 谢谢。

最佳答案

我提醒你 documentation ,你可以使用这个构造函数:

C++: Mat::Mat(int ndims, const int* sizes, int type, const Scalar& s)

传递 cv::Scalar(0) 应该适合您的目的。

int sizes[] = { 100, 100, 100 };
cv::Mat *matrix = new cv::Mat(3, sizes, CV_32FC1, cv::Scalar(0));

这应该是一个 3D 矩阵,一种边为 100 的立方体。

关于c++ - 如何使用 opencv 库将 3D 矩阵的元素置零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19168573/

相关文章:

c++ - 通过迭代自适应阈值和形状分析检测圆形对象的集群

c++ - 将图像从网络摄像头转换为灰度opencv

file - 如何从 Rust 中的 txt 文件中读取矩阵?

R选择至少一个值满足条件的整个列

c++ - 这是旧的 C++ 风格构造函数吗?

c++ - SIGABRT 和 SIGSEGV 有什么区别

c++ - UNIX 系统调用的排序规范

c++ - 指针数据字段的访问函数

algorithm - 基于运动的人体检测

matlab - 遍历矩阵列的最佳方法是什么?