我尝试传递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有显式的构造函数,只是那些构造函数设置了一些标记,这些标记不能更改,因此尝试更改它们的功能将失败)。