作者laladeer (laladeer)
看板C_and_CPP
标题[问题] opencv阵列取值
时间Wed Nov 23 15:44:20 2016
开发平台(Platform): (Ex: Win10, Linux, ...)
VS2013
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
opencv
问题(Question):
测试opencv affine的程式,中间想取用计算出来的矩阵的数值,但取出後数值不正确
喂入的资料(Input):
[0.5009784735812133, -0.5009784735812133, 256;
0.5009784735812133, 0.5009784735812133, 0]
预期的正确结果(Expected Output):
0.500978
-0.500978
256
0.500978
0.500978
0
错误结果(Wrong Output):
9.47757e-038
1.75024
9.47757e-038
-1.75024
0
3.75
程式码(Code):(请善用置底文网页, 记得排版)
完整程式码
http://codepad.org/EwDkpPJ2
问题点:
cout << warpMat << endl;
输出如上面喂入资料
cout << ((float*)warpMat.data)[0 * warpMat.cols + 0] << endl;
应该是阵列的第一个值
想请问各位大大,warpMat是32位元的资料,为什麽用float取出来的值会不同?
改用double数值却是正确的,不知道问题出在哪里
补充说明(Supplement):
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.124.44.195
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1479887063.A.753.html
1F:推 Zero0910: 你定义的warpMat被getAffineTransform回传的覆盖掉了吧 11/23 16:23
2F:→ Zero0910: getAffineTransform应该是回传double格式的mat 11/23 16:23
3F:→ laladeer: 我要怎麽知道他回传的是double还是float呢? 11/23 22:03
4F:→ nh60211as: .type() 11/24 00:23
5F:→ laladeer: 谢谢 大大 我再试试看这个 11/24 18:41