我尝试将cv::Vec3f
向量作为参数传递给函数,但是在函数内部我无法访问向量元素。
这是我的代码:
#include <iostream>
#include <opencv2/opencv.hpp>
int main() {
cv::Vec3f y(1.0f, 5.0f, 2.0f);
cv::Matx33f M(1,2,3,4,5,6,7,8,9);
std::vector<cv::Vec3f> test(const std::vector<cv::Vec3f>&p,const cv::Matx33f &M);
cv::Vec3f v1_new = test({y}, M)[0];
std::cout<<v1_new<<std::endl;
std::vector<cv::Vec3f> test(const std::vector<cv::Vec3f>& p, const cv::Matx33f &M)
{
std::vector<cv::Vec3f> result;
return p[0];
}
错误:
error: could not convert ‘(& p)->std::vector<cv::Vec<float, 3> >::operator[](0)’ from ‘const value_type {aka const cv::Vec<float, 3>}’ to ‘std::vector<cv::Vec<float, 3> >’
return p[0];
^
答案 0 :(得分:1)
您正在访问元素。那不是问题。
问题是您试图将元素转换为不兼容的类型。如错误消息所述:
无法将转换为``std :: vector
>”
您的函数希望返回cv::Vec3f
个元素的 vector ,但是您尝试返回一个单个 cv::Vec3f
的元素。这与函数的返回类型不匹配,因此必须进行转换,但是没有定义这种转换,因此会出错。
您声明了兼容的向量变量result
,但没有在其中填充任何内容,也没有return
对其进行填充。
尝试以下方法:
std::vector<cv::Vec3f> test(const std::vector<cv::Vec3f>& p, const cv::Matx33f &M)
{
std::vector<cv::Vec3f> result;
result.push_back(p[0]);
return result;
}