[英]Access element of float cv::Mat
我不明白為什么我不能讓這段代碼工作:
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)
訪問該矩陣。
我對 cv 命名空間一無所知,但我會在第一次調用 M.at() 時放置一個斷點並查看 M 的成員。其中一個成員導致錯誤:
//sure hope it isn't this one
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.