我有这个变量
std::vector <cv::KeyPoint> X[e];
以 e 作为处理的文件数,以及类似的“过滤” vector 变量
std::vector <cv::KeyPoint< Y[e];
我使用 vector X 作为检测到的特征的容器
int minHessian = 400;
cv::SurfFeatureDetector deteC( minHessian );
deteC.detect(f[z], X[z]);
在哪里
cv::Mat f[e]
是图片的容器,z只是一个计数器。
然后开始这个序列
int kd = 0;
for(int dk = 0; dk < X[z].size(); dk++)
{
cv::KeyPoint s = X[z].at(dk);
qDebug() << fT << "KEYPOINT" << dk << "\nCLASS ID: " << s.class_id << "\nRESPONSE: "
<< s.response << "\nOCTAVE: " << s.octave
<< "\nSIZE: " << s.size << "\nANGLE: " << s.angle
<< "\nX: " << s.pt.x << " Y: " << s.pt.y;
if(s.octave > 2 && s.response > 5000.00)
{
s.class_id = e;
kd++;
// I plan to COPY s to Y[e].at(kd)
}
}
如何将 s 复制到 Y[e].at(kd) ?感谢您的回复! =)
最佳答案
// I plan to COPY s to Y[e].at(kd)
如果你知道,在循环开始之前,Y[e]
会变成什么大小,那么你可以把它放在循环之前:
Y[e].resize(size_that_Ye_vector_will_be);
循环中的这个:
Y[e].at(kd) = s;
另一方面,如果您不知道 Y[e]
会变成多大,您应该在循环内使用 push_back
来增长 vector 一个项目一次:
Y[e].push_back(s);
关于c++ - 如何将关键点复制到另一个 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7981212/