zoukankan      html  css  js  c++  java
  • 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);

    即可消除错误,错误虽然小,可也耽误了不少时间,以后编程时要更加注意程序的规范性。
  • 相关阅读:
    剑指offer-用两个栈实现队列
    Java数组判空的正确打开方式
    浏览器输入URL后后的过程
    HTTP状态码
    HTTP和HTTPS
    北京好未来公司linux面试题
    三剑客 -- sed
    三剑客 -- grep
    shell脚本
    自动化 -- expect
  • 原文地址:https://www.cnblogs.com/freshmen/p/4540887.html
Copyright © 2011-2022 走看看