私はforループとその戻り値に関する質問があります。これはC++コードで、私はopenCV 2.4Vを使用しています。戻り値 "res"はどのように更新されますか? (ConcativeMat Con NN)
この機能への入力は、プールされた最大600の画像です。 600画像< <プール< <最大値ポイント。 "res"行列のサイズは600x128で、vec.size()= 600です。
私の場合、forループ内でresは決して更新されませんが、戻り値はゼロではありません。
私はそれが必要なラインではないと思った、ので、私は
"ptmat.copyTo(サブビュー)"
を疑いました。しかし、私がそれを取ったとき、resは更新されませんでした(最初のMatのように0になります)。誰でも、res値がどのように更新されるのか説明できますか?
また、この機能はなぜ連結機能と呼ばれていますか?
OpenCV documentationによればMat
concatenateMat(vector<vector<Mat> > &vec) {
int subFeatures = vec[0][0].rows * vec[0][0].cols;
int height = vec[0].size() * subFeatures;
int width = vec.size();
Mat res = Mat::zeros(height, width, CV_64FC1);
for (int i = 0; i<vec.size(); i++) {
for (int j = 0; j<vec[i].size(); j++) {
Rect roi = Rect(i, j * subFeatures, 1, subFeatures);
Mat subView = res(roi);
Mat ptmat = vec[i][j].reshape(0, subFeatures);
ptmat.copyTo(subView);
}
}
return res;
}