Существующий API лучше и быстрее. Это позволяет не выделять память каждый раз. В cv :: resize для dst Mat будет вызывать cv :: Mat :: create. Но если dst уже имеет тот же размер и тип, то это будет без нового выделения .
Например, я могу создать изображение 800x600 и для большого видеофайла изменить размер каждого кадра в этом буфере:
cv::Mat img(800, 600,...); // Initialization and memory allocation
...
for (; cap >> someMat;)
{
cv::resize(someMat, img, ...); // No memory allocation, resizing into img
}
Для этого случая это будет N выделений памяти:
cv::Mat img;
for (; cap >> someMat;)
{
img = cv::resize(someMat, ...); // New allocation inside cv::resize and free previous value
}