cv::Mat 取元素引起的报错

一、定义一个矩阵

方法1:定义的时候,矩阵元素无初始值,需要赋值

cv::Mat intrinsic(3, 3, CV_64F );

cv::Mat distortion(1, 5, CV_64F);

1.矩阵赋值

intrinsic.at<double>(0, 0) = 2400;

intrinsic.at<double>(0, 1) = 0;

intrinsic.at<double>(0, 2) = 960;

intrinsic.at<double>(1, 0) = 0;

intrinsic.at<double>(1, 1) = 2400;

intrinsic.at<double>(1, 2) = 540;

intrinsic.at<double>(2, 0) = 0;

intrinsic.at<double>(2, 1) = 0;

intrinsic.at<double>(2, 2) = 1;

distortion.at<double>(0, 0) = 0 ;

distortion.at<double>(0, 1) = 0;

distortion.at<double>(0, 2) = 0;

distortion.at<double>(0, 3) = 0;

distortion.at<double>(0, 4) = 0;

方法2:定义的时候,矩阵元素初始为0

cv::Mat intrinsic = cv::Mat::zeros(3, 3, CV_64FC1);

cv::Mat distortion = cv::Mat::zeros(1, 5, CV_64FC1);

intrinsic.at<double>(0, 0) = 2400;

intrinsic.at<double>(0, 2) = 960;

intrinsic.at<double>(1, 1) = 2400;

intrinsic.at<double>(1, 2) = 540;

intrinsic.at<double>(2, 2) = 1;

方法3:cv::Mat_ 定义矩阵,直接初始化

cv::Mat distortion = (cv::Mat_<double>(1, 5) << 0, 0, 0, 0, 0);

二、定义的Mat类型,与使用时的类型不一致

使用Mat .at时数据类型的选择错误:如double类型的数据,你写成了float就会报错。

intrinsic.at<float>(0, 0) = 2000;

报错1:OpenCV(4.4.0) Error: Assertion failed (((0x28442211 >> ((traits::Depth<_Tp>::value) & ((1 << 3) - 1))*4) & 15) == elemSize1()) in cv::Mat::at, file D:\Projects\C++\opencv_test\opencv_test\opencv_test\include\opencv2\core\mat.inl.hpp, line 1157

三、Mat.at 取值越界

intrinsic.at<double>(3, 0) = 2000;

报错2:OpenCV(4.4.0) Error: Assertion failed (data) in cv::Mat::at, file D:\Projects\C++\opencv_test\opencv_test\opencv_test\include\opencv2\core\mat.inl.hpp, line 1154

相关推荐
FlightYe8 小时前
视界原理之3D视频(四):裸眼、眼镜和头显
android·linux·c++·3d·ffmpeg·音视频
by209999 小时前
C++ 智能指针的所有权与使用
开发语言·c++·经验分享
Rover Ramble9 小时前
C++ 用互斥锁实现读写锁
开发语言·c++
小豆庄9 小时前
本地视频打码:多模型检测、帧间追踪与18种模糊的选型
opencv·目标检测·ai·自然语言处理·音视频·视频
你怎么知道我是队长9 小时前
C++零基础入门第2周:数据类型、运算符与表达式完全指南(附20段可运行代码+避坑清单)
c++
say_fall10 小时前
【Linux系统编程】Ext 文件系统:磁盘与存储、文件与目录、现代计算机究竟如何寻找文件
linux·运维·服务器·数据库·c++
雪落漂泊10 小时前
C++算法 滑动窗口篇(下)
开发语言·c++
爱聊灵光的维C10 小时前
从看见世界到重构认知:在视觉与硬件的交汇处,寻找我们这代人的北极星
c语言·物联网·计算机视觉·重构·硬件工程·射频工程
你怎么知道我是队长13 小时前
C++零基础第3周:if/else、switch、for/while/do-while 控制流完全指南(附20段可运行代码+避坑清单)
java·开发语言·c++
青少儿编程课堂14 小时前
蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:倍增法求最近公共祖先LCA解析
c++·python·算法·bfs·信息学竞赛