cv::VideoCapture から取得した複数のフレームを std::vector に保管する

clone() していないでやっていて,詰まった.

#include <vector>
#include <opencv/cv.h>
#include <opencv/highgui.h>

#ifdef _DEBUG
#pragma comment( lib, "cv200d.lib" )
#pragma comment( lib, "cxcore200d.lib" )
#pragma comment( lib, "highgui200d.lib" )
#else
#pragma comment( lib, "cv200.lib" )
#pragma comment( lib, "cxcore200.lib" )
#pragma comment( lib, "highgui200.lib" )
#endif

// video2vectormat.exe <videofile>
int main ( int argc, char *argv[] )
{
	// parameter count
	if ( argc < 2 )
	{
		return 0;
	}

	// load video
	cv::VideoCapture vc( argv[1] );
	if ( !vc.isOpened() )
	{
		return 0;
	}

	// var
	std::vector<cv::Mat> images;
	int frame = 15;
	cv::Mat image;
	// getframes
	for ( int i = 0; i < frame; i++ )
	{
		vc >> image;
		if ( image.empty() )
		{
			break;
		}
		images.push_back( image.clone() );
	}
	// release video
	vc.release();

	// showframes
	std::string wname( "preview" );
	cv::namedWindow(wname, CV_WINDOW_AUTOSIZE );
	int key;
	for ( unsigned int i = 0; i < images.size(); i++ )
	{
		cv::imshow( wname, images[i] );
		key = cv::waitKey(500);
		// if esc then break
		if ( key == 0x1b )
		{
			break;
		}
	}

	// end.
	cv::imshow( wname, cv::Mat( image.size(), image.type() ));
	cv::waitKey();

	return 0;
}