У меня есть очень простой вопрос о хранении векторов в OpenCV, но, поскольку я всегда работал в MATLAB, мне действительно трудно выполнять одни и те же векторные операции в C ++.
Итак, вот моя проблема: я вычислил оптический поток, используя базовые функции cvGoodFeaturesToTrack () и cvCalcOpticalFlowPyrLK (), и нашел конечные точки линий потока и показал их на изображении в виде линий оптического потока.
Однако я хочу сохранить эти конечные точки потоковой линии в векторе, а затем сохранить их в виде текстового файла, который я затем смогу отправить в MATLAB для чтения.
Я действительно не знаю, как я могу создать эти векторы, которые хранят эти точки и сохраняют их в текстовом файле.
Кто-нибудь может помочь?
Спасибо,
Яши
Основываясь на комментариях ОП по этому вопросу, я думаю, что это хороший способ сделать это:
std::ofstream matlabFile;
matlabFile.open("pointsOutput.m");
matlabFile << "Corners = [ ...\n";
for (int i = 0; i < MAX_CORNERS; ++i) {
matlabFile << corners2[i].x << " " << corners2[i].y << "; ...\n";
}
matlabFile << "];";
matlabFile.close();
Этот код должен дать вам следующий файл в локальном каталоге:
pointsOutput.m:
Corners = [ ...
1 2; ...
3 4; ...
];
который в Matlab даст вам следующую матрицу:
Corners =
1 2
3 4
Предположим, у вас есть две точки в этом списке с x и y = 1 и 2, 3 и 4.
Надеюсь это поможет.
Других решений пока нет …