gpt4 book ai didi

c - 在 openCV 中访问 mat 元素

转载 作者:太空宇宙 更新时间:2023-11-03 22:14:48 24 4
gpt4 key购买 nike

下面是我将矩阵(声明为 rgbMat)旋转 90 度的代码,如下面的代码所示

    CvMat* rot = cvCreateMat(2,3,CV_32FC1);
CvPoint2D32f center = cvPoint2D32f(rgbMat->width/2,rgbMat->height/2);
double angle = 90;
double scale = 5;
CvMat* rot3= cv2DRotationMatrix( center, angle, scale, rot);

更新

我正在尝试访问 rot3 的元素,以便我知道我得到的是什么值。就像下面的代码:-

    cv::Mat rot3cpp(rot3);
for(int i=0;i<rot3cpp.cols;i++)
{
for (int j =0;j<rot3cpp.rows;j++)
{
CvScalar scal = cvGet2D(rot3,i,j);
printf("new matrix is %f: \n", rot3cpp.at<float>(i,j));
}
}

但我收到这样的错误:

     OpenCV Error: One of arguments' values is out of range (index is out of range) in cvGet2D, file /home/xyz/Documents/opencv-2.4.5/modules/core/src/array.cpp, line 1958 terminate called after throwing an instance of 'cv::Exception' what():  /home/xyz/Documents/opencv-2.4.5/modules/core/src/array.cpp:1958: error: (-211) index is out of range in function cvGet2D

谁能告诉我哪里出错了。任何帮助将不胜感激。

最佳答案

第一个循环必须迭代矩阵行,因为 OpenCV 使用行优先顺序。 atcvGet2D 的第一个索引是行索引,而不是列。正确的代码:

for(int i=0; i<rot3.rows; i++)
{
for(int j=0; j<rot3.cols; j++)
{
cout << rot3.at<float>(i,j);
}
}

关于c - 在 openCV 中访问 mat 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17610624/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com