手动初始化 cv::Matx
Manually initializing a cv::Matx?
我有一些相机校准数据,格式如下:
0.3072423 -0.0104122 -0.9515744 -208.5614
0.003617216 0.9999457 -0.009773563 -4.705516
0.9516244 -0.0004391983 0.3072633 -152.5427
0 0 0 1
我有一个将const cv::Matx<T, 4, 4>& M
作为参数的函数。(来自第三方代码)
template<typename T>
cv::Matx<T, 6, 1> hom2cayley(const cv::Matx<T, 4, 4>& M)
{
cv::Matx<T, 3, 3> R(M(0, 0), M(0, 1), M(0, 2),
M(1, 0), M(1, 1), M(1, 2),
M(2, 0), M(2, 1), M(2, 2));
cv::Matx<T, 3, 1> C = rot2cayley(R);
return cv::Matx<T, 6, 1>(C(0, 0), C(1, 0), C(2, 0),
M(0, 3), M(1, 3), M(2, 3));
}
抱歉,如果这是一个愚蠢的问题,但是如何使用上述值手动填充Matx
,以便将其传递给函数?
我有:
void main()
{
template<typename T>
const cv::Matx<T, 4, 4> camData{ 0.3072423, - 0.0104122, - 0.9515744, - 208.5614,
0.003617216, 0.9999457, - 0.009773563, - 4.705516,
0.9516244, - 0.0004391983, 0.3072633, - 152.5427,
0 , 0 , 0 , 1 };
hom2cayley(camData); //invalid argument, camData is undefined.
}
。但它给出了上面的错误。我在这里犯了什么错误?
谢谢。
主要情况下,您必须使用特定类型的 Matx。就您的目的而言,它是浮动或双倍。将cv::Matx<T, 4, 4>
替换为 cv::Matx<double, 4, 4>
,并在 main 中删除template<typename T>
。
相关文章:
- 将"打开的CV图像"中的"颜色"转换为整数格式
- 概念中的cv限定符需要表达式参数列表
- 将CHW格式的浮点向量转换为cv::Mat
- 错误的cv::face FacemarkLBF实例化
- 如何检查给定的参数是否为 cv::noArray()?
- 开放 CV 中的动态内存分配,用于视频处理
- 如何在 opencv 中使用 cv::VideoCapture::waitAny()
- 错误:未定义对cv::cudacodec::createVideoReader的引用
- OpenCV 3.4.1 error readNetFromTensorflow 无法在 cv::d nn::ReadProtoFromBinaryFile 中打开 .pb
- C++:从GPU内存(cudaMemcpy2D)获取BGR图像(cv::Mat)
- 选择基于另一个垫子的非零像素的cv::Mat的一部分?
- 将 cv::mat 转换为 QImage
- Inference pytorch C++ with alexnet and cv::imread image
- OpenCV 3.4.3 中对 'cv::String::d eallocate()' 错误的未定义引用
- cv::Normalise() 中的 L2_NORM 和 NORM_MINMAX 实现有什么区别?
- 将 cv::Mat 转换为 std::vector 的通用函数
- OpenCV undefined reference to 'cv::imread(cv::String const&, int)'
- 在 QML VideoOutput 中将 cv::mat 显示为 QVideoFrame
- 如何应用带有cv::cuda和C++的Canny Edge检测器?
- 手动初始化 cv::Matx