C++ 在InitUnderdistortyMap中,断言失败(K.size()==size(3,3)&;(D.empty()| | D.total()==4))
我有一个OpenCV-3.3.1代码,用于接收鱼眼图像和相机信息 我使用的是C++ 在InitUnderdistortyMap中,断言失败(K.size()==size(3,3)&;(D.empty()| | D.total()==4)),c++,opencv,C++,Opencv,我有一个OpenCV-3.3.1代码,用于接收鱼眼图像和相机信息 我使用的是cv::fisheye::unsortimage(输入img,输出img,K,D)取消鱼眼图像失真的功能。我的相机矩阵是一个3乘3的double类型向量,而我的失真系数向量是一个1乘5的double类型向量 当我打印出K和D变量时,我得到: D = -0.0107835 0.0484281 -0.045424 0.00873738 0 K = 286.704 0 413.346 0 286.782 39
cv::fisheye::unsortimage(输入img,输出img,K,D)代码>取消鱼眼图像失真的功能。我的相机矩阵是一个3乘3的double类型向量,而我的失真系数向量是一个1乘5的double类型向量
当我打印出K
和D
变量时,我得到:
D =
-0.0107835 0.0484281 -0.045424 0.00873738 0
K =
286.704 0 413.346
0 286.782 397.179
0 0 1
但是,cv::fisheye::unsortimage
抛出以下错误:
[错误][1599838848.368370935]:cv异常:
/tmp/binarydeb/ros-kinetic-opencv3-3.3.1/modules/calib3d/src/fisheye.cpp:427:
错误:(-215)K.size()==size(3,3)和&(D.empty()| | D.total()==4)
在函数initundistortyMap中
我进入了,发现此错误的条件是:
CV_断言(K.size()=size(3,3)和&(D.empty()| | D.total()=4))代码>
然后我打印了以下内容:(注意,'classstd::vector'没有名为'total'的成员
,这是一个特定的成员,因此我打印了vector的大小D
)
基于此,K.size()==size(3,3)和&(D.empty()| | D.total()==4)
应该返回False,并且不应该抛出断言错误。我错过了什么
从文件:
cv::fisheye::Underortimage(输入失真、输出未失真、输入K、输入D、输入Knowed=cv::noArray()、常量大小和新大小=大小())
注意:我看到了,但它没有解决我的问题。断言如果是错误的,就会失败。如果为false,则应抛出断言。@user253751我明白了。你建议我如何解决这个问题?当断言为假时,你必须使断言为真。如果为false,则应抛出断言。@user253751我明白了。你建议我如何解决这个问题?你必须让这个断言成为事实
K.size() = 3
D.empty() = 0
D.size() = 5