我尝试传递Mat_<float>作为cv::projectPoints的目的地。每当我在运行时执行此操作_OutputArray::create抱怨时,该类型都是固定的(fixedType()fixedSize())。

可悲的是,文档并没有真正解释这些概念,更不用说描述使用实例化OutputArray(这是一个问题严重的转换器类)必须克服的障碍。
有人可以对OpenCV的滑稽 Action 以及如何使其发挥作用有一些了解吗?

最佳答案

由于OutputArray是预先确定的,因此采用Mat_<T>FIXED_TYPE构造函数设置float标志(在您的情况下为projectPoints)。由于这意味着单通道矩阵,并且Mat_<Vec2f>要创建两通道输出,因此失败。使用Mat_<T>或等效的名称。

与vasile所说的相反,您可以使用Matx以及Matx(具有固定的大小和类型)作为OutputArray(Mat_和ojit_code有显式的构造函数,只是那些构造函数设置了一些标记,这些标记不能更改,因此尝试更改它们的功能将失败)。

07-27 13:28