opencv中关于Mat类的一些问题

来源:互联网 发布:ug四轴联动编程实例 编辑:程序博客网 时间:2024/06/03 03:16

跟着师兄一起学视觉处理相关,在自己做一个自动迷宫寻径的程序时,遇到了一些新手都会遇到的问题。这里就Mat类的一些问题来讨论一下。

涉及到数十万个像素点的数据,在复制像素点信息的时候,遇到了一个无法解决的问题,VS调试的时候总是显示:“有未经处理的异常: Microsoft C++ 异常: cv::Exception,位于内存位置 0x000000883AB6DCF0 处”。在查看堆栈调用的时候能看到最下面一层调用堆栈的代码是:

Mat size1 = Mat(Size(l, l), CV_8UC1,Scalar::all(1));

在命令框中也有Opencv error:Assertion Failed (s>=0)in cv::setSize

一番查资料之后,得出问题原因在于查看size1的时候能看到的data为NULL;而这里的data是不能为NULL的,否则会发生初始化错误。


一直以为是内存分配不足或者是创建Mat的时候有的参数不对,在咨询了一波之后,发现是Mat定义之后未初始化的问题,考虑到程序中涉及到多个新建的Mat类,选择了先定义一个足够大小的Mat类初始化,然后再每一个需要新建初始化类的时候,进行resize和赋值操作,以此来达到避免Mat错误的情况

原创粉丝点击