gpt4 book ai didi

c++ - float cv::Mat 的访问元素

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

我不明白为什么我不能让这段代码工作:

cv::Mat M(2, 3, CV_32FC1);
cv::Point2f center(20, 20);
M = cv::getRotationMatrix2D(center, 20, 1.0);
float test;
test = M.at<float>(1, 0);
test = M.at<float>(0, 1);
test = M.at<float>(1, 1);

使用 M.at 访问元素时代码失败。出现以下断言:

OpenCV Error: Assertion failed (dims <= 2 && data && (unsigned)i0 < (unsigned)si
ze.p[0] && (unsigned)(i1*DataType<_Tp>::channels) < (unsigned)(size.p[1]*channel
s()) && ((((sizeof(size_t)<<28)|0x8442211) >> ((DataType<_Tp>::depth) & ((1 << 3
) - 1))*4) & 15) == elemSize1()) in unknown function, file C:\OpenCV2.2\include\
opencv2/core/mat.hpp, line 517

最佳答案

引用 Good Will Hunting 的话,“这不是你的错!”

M已被 CV_64C1 覆盖或 double旋转矩阵,这就是为什么 M.at<float>(i,j)失败。

所以,不用费心去初始化M ; cv::getRotationMatrix会处理它并返回 CV_64F可以(当然)使用 M.at<double>(i,j) 访问的矩阵.

关于c++ - float cv::Mat 的访问元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7001613/

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