首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在OpenCV中用零填充矩阵?

如何在OpenCV中用零填充矩阵?
EN

Stack Overflow用户
提问于 2013-06-11 18:18:22
回答 8查看 113.5K关注 0票数 28

下面的代码会导致异常。为什么?

代码语言:javascript
复制
#include <opencv2/core/core.hpp>
#include <iostream>

using namespace cv;
using namespace std;

void main() {

    try {
        Mat m1 = Mat(1,1, CV_64F, 0);
        m1.at<double>(0,0) = 0;
    }
    catch(cv::Exception &e) {
        cerr << e.what() << endl;
    }

}

错误如下:

代码语言:javascript
复制
OpenCV Error: Assertion failed (dims <= 2 && data && (unsigned)i0 < (unsigned)size.p[0] && (unsigned)(i1*DataType<_Tp>::channels) < (unsigned)(size.p[1]*channels()) && ((((sizeof(size_t)<<28)|0x8442211) >> ((DataType<_Tp>::depth) & ((1 << 3
) - 1))*4) & 15) == elemSize1()) in unknown function, file %OPENCV_DIR%\build\include\opencv2\core\mat.hpp, line 537

更新

如果跟踪这段代码,我会发现构造函数行调用了构造函数

代码语言:javascript
复制
inline Mat::Mat(int _rows, int _cols, int _type, void* _data, size_t _step)

为什么?这个原型有5个参数,而我提供了4个参数。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2013-06-11 19:19:37

因为最后一个参数是可选的,而且数据指针应该指向适当的位置:

代码语言:javascript
复制
//inline Mat::Mat(int _rows, int _cols, int _type, void* _data, size_t _step)
double mydata[1];
Mat m1 = Mat(1,1, CV_64F, mydata); 
m1.at<double>(0,0) = 0;

但是最好直接使用这个基于模板的构造函数:

代码语言:javascript
复制
//inline Mat::Mat(int _rows, int _cols, int _type, const Scalar& _s)
Mat m1 = Mat(1,1, CV_64F, cvScalar(0.));

//or even
Mat m1 = Mat(1,1, CV_64F, double(0));
票数 11
EN

Stack Overflow用户

发布于 2013-06-11 18:24:45

如何在OpenCV中用零填充矩阵?

要用零填充预先存在的Mat对象,可以使用Mat::zeros()

代码语言:javascript
复制
Mat m1 = ...;
m1 = Mat::zeros(1, 1, CV_64F);

要初始化Mat,使其仅包含零,可以将值为0的标量传递给构造函数:

代码语言:javascript
复制
Mat m1 = Mat(1,1, CV_64F, 0.0);
//                        ^^^^double literal

你的版本失败的原因是,作为第四个参数传递0与接受void*的重载匹配得比接受标量的重载更好。

票数 39
EN

Stack Overflow用户

发布于 2013-06-11 18:26:05

使用cv::mat::setto

标量(cv::img.setTo(redVal,greenVal,blueVal))

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17041758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档