OpenCV中Mat数据的访问报错

最近再写一段程序的时候,要访问Mat中的元素。在定义Mat型数据的时候,用

Mat ObjectPoints(48,3,CV_32FC1,0)

对其进行初始化后,用at进行访问时报内存错误。

 1     Mat ObjectPoints(48,3,CV_32FC1);
 2     Mat ImgPoints(48,2,CV_32FC1);
 3     Mat CameraMatrix(3,3,CV_32FC1);
 4     CvMat *intrinsic_matrix;
 5     CvMat *ObjPoint;
 6     CvMat *ImgPoint;
 7     CvMat rotation_vector;
 8     CvMat translation_vector;
 9
10     int j,k,n;
11     n = 0;
12     for( j = 0; j < 8; j++ )
13     {
14         for( k = 0; k < 6; k++ )
15         {int m=6*j+k;
16          objectPoints[n++] = cv::Point3f(j*30, k*30, 0);
17          ObjectPoints.at<float>(m,0)=objectPoints[n++].x;
18          ObjectPoints.at<float>(m,1)=objectPoints[n++].y;
19          ObjectPoints.at<float>(m,2)=objectPoints[n++].z;
20         }
21     }

在网上搜了下CV_32FC1,表示32位即float型数据,但是我却对其赋了初值0(int 数据)。改为

 Mat ObjectPoints(48,3,CV_32FC1,0.0);
 Mat ObjectPoints(48,3,CV_32FC1,0.0f);

即可消除错误,错误虽然小,可也耽误了不少时间,以后编程时要更加注意程序的规范性。
时间: 2024-10-25 07:20:07

OpenCV中Mat数据的访问报错的相关文章

解决asp.net mvc中*.resx资源文件访问报错

个人笔记 问题重现 在asp.net mvc中,使用资源文件会出现一个问题,例如: 紧接着我进入视图界面,输入下面代码: 1 <a href="javascript:void(0);">测试@KuaiLeYouNi.Web.AppResource.Space</a> 以上编译不会报错,但是运行是会报错:“编译器错误消息: CS0122: “KuaiLeYouNi.Web.AppResource”不可访问,因为它受保护级别限制” 问题解决 原来资源文件默认的访问修

使用C++将OpenCV中Mat的数据写入二进制文件,用Matlab读出

在使用OpenCV开发程序时,如果想查看矩阵数据,比较费劲,而matlab查看数据很方便,有一种方法,是matlab和c++混合编程,可以用matlab访问c++的内存,可惜我不会这种方式,所以我就把数据写到文件里,用matlab读出来,然后用matlab各种高级功能查看数据的值. 1.将Mat的数据写入指定文件 为了方便拿来主义者,我直接把这个函数贴出来,你只要把代码拷贝到自己的代码里,就可以直接用了.如果有问题,赶紧评论,我会尽快看看问题出在哪里. #include <iostream>

C# 访问数据的时候报错 (拒绝了对对象 &#39;XXXX&#39; (数据库 &#39;SHQY&#39;,架构 &#39;dbo&#39;)的 SELECT 权限)

拒绝了对对象 'XXXX' (数据库 'SHQY',架构 'dbo')的 SELECT 权限 解决办法 use [docareMZ]--docareMZ 数据库名 GO GRANT SELECT ON SCHEMA::[dbo] TO [public] --查 use [docareMZ] GO GRANT EXECUTE ON SCHEMA::[dbo] TO [public] C# 访问数据的时候报错 (拒绝了对对象 'XXXX' (数据库 'SHQY',架构 'dbo')的 SELECT

ArcGIS API for Silverlight 调用WebService出现跨域访问报错的解决方法

原文:ArcGIS API for Silverlight 调用WebService出现跨域访问报错的解决方法 群里好几个朋友都提到过这样的问题,说他们在Silverlight中调用了WebService方法,总报这个错误,贴图如下: 解决办法: 1.确定你的Silverlight项目及承载Silverlight的Web程序根目录下都包含2个跨域文件,分别是crossdomain.xml和clientaccesspolicy.xml: crossdomain.xml文件,如下: <?xml ve

OpenCv学习笔记(一)----OpenCv中Mat类源码的详细解读(2)

(一)像素存储的方法 1--本节我们讲解如何存储像素,存储像素值,需要指定: 1--颜色空间 2--数据类型 2--其中,颜色空间是指针对一个给定的颜色,如何组合颜色以其编码. 3--最简单的颜色空间是----灰度级空间----只需要处理:黑色和白色,对它们进行组合便可以产生不同程度的灰 色(256灰度级) 4--对于彩色方式---则有更多种类的颜色空间,但不论那种方式,都是把颜色分成:三个或者四个---基元素,通过 组合基元素,就可以产生所有的颜色 1--RGB颜色空间是最常用的一种颜色空间,

OpenCV中Mat的属性

OpenCV中Mat的属性 最近在做一OpenCV的图像轮廓检验,但当用到霍夫变换时才发现对Mat的属性了解不足.Mat在OpenCV中的地位是及其重要的,因此有必要做一个总结. 大体上来说,Mat是一个类,由两个数据部分组成:矩阵头(包括矩阵尺寸.存储方法.存储地址等信息)和指向数据部分的指针. 矩阵头部分 dims->矩阵的维度 rows->矩阵的行数 cols->矩阵的列数 size->矩阵的大小,size(cols,rows) channels->矩阵元素拥有的通道数

【mybatis】mybatis访问报错:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)

mybatis访问报错:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 需要检查的步骤: 1.是否mapper.java文件上使用了注解@Mapper  或者 在启动类上扫描了Mapper类 @MapperScan("com.swapping.springcloud.ms.integral.mapper")   [注意扫描的包名是否正确] 2.注意mapper.xml文件中的

网站访问报错Error 503监控软件

常常出现iis网站访问报错是503,这个提示告诉我们这个是网站暂时关闭或者访问量超过限制值.为了能够及时的监控到iis的503错误我们需要下载一个503错误监控软件: IIS7服务器监控工具,该软件风格简约,操作简单,删除系统缓存,重启服务器,修改服务器账号密码,修复服务器复制功能等,也可以一键开启关闭MYSQL和503错误的监控,省去了繁琐的操作步骤,一键完成.也可以直接修改远程端口范围,省去繁琐步骤.目前有一款iis7服务器监控工具,Iis实时监控工具网络上有很多了,但是兼具数据维护管理及性

thinkphp5访问报错 ...with message &#39;mkdir(): Permission denied&#39; in... 或...failed to open stream: Permission denied&#39; in...

报错截图1: 报错截图2: 报错原因没有权限访问thinkphp5/runtime目录. 解决方法: 1.如果thinkphp5/runtime目录下面有文件,先清空thinkphp5/runtime目录: 2.修改thinkphp5/runtime目录权限为可读可写. thinkphp5访问报错 ...with message 'mkdir(): Permission denied' in... 或...failed to open stream: Permission denied' in.