OpenCV 2.0 の cv::Mat の datastart と dataend

datastart dataend 間ってどんなサイズだろうか.

テスト画像

コード

#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

int main ( int argc, char *argv[])
{
	if ( argc < 2 )
		return 0;

	cv::Mat img = cv::imread( argv[1] );
	if ( img.empty() )
		return 0;

	printf("end-start:   %d\n", img.dataend - img.datastart );
	printf("  datastart: %p\n", img.datastart);
	printf("  dataend:   %p\n", img.dataend);
	printf("size:        %d\n", img.rows * img.cols * img.channels() );
	printf("  rows:      %d\n", img.rows );
	printf("  cols:      %d\n", img.cols );
	printf("  channels:  %d\n", img.channels() );

	std::string wname("preview");
	cv::namedWindow( wname, CV_WINDOW_AUTOSIZE );
	cv::imshow( wname, img );
	cv::waitKey();

	return 0;
}

実行結果

思った通りの結果が得られた.

end-start:   187500
  datastart: 00DA5660
  dataend:   00DD32CC
size:        187500
  rows:      250
  cols:      250
  channels:  3