Я не большой программист на C ++, я больше привык к C # и Java, где не нужно беспокоиться об указателях. Я думал Я понял, что я здесь делал, но результаты не те, что я ожидал, и я не уверен, что я делаю что-то глупое здесь, или если где-то еще в программе вызывает проблемы.
В любом случае, я работаю с OpenCV, и у меня есть два изображения, которые я инициализирую так:
IplImage *current_frame = NULL;
IplImage *previous_frame = NULL;
Тогда у меня есть этот блок кода:
if (current_frame != NULL)
{
previous_frame = new IplImage(*current_frame);
current_frame = cvQueryFrame( capture );
}
else
{
current_frame = cvQueryFrame( capture );
previous_frame = cvQueryFrame( capture );
}
Идея состоит в том, что при первом выполнении кода текущий и предыдущий кадры будут использовать только что захваченное изображение, но предыдущий кадр будет принимать предыдущее значение current_frame, а current_frame захватывать свежее изображение (I ' мы пошли по коду, и он входит в правильные ветки оператора if).
На самом деле происходит то, что я вывожу оба кадра, и они идентичны, а не предыдущий_кадр отстает на единицу, как я хочу.
Я неправильно использую указатели? Если так, как я должен получить поведение, которое я хочу? Или это похоже на то, что он должен делать то, что я хочу?
Спасибо.