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);

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

转载于:https://www.cnblogs.com/freshmen/p/4540887.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值