图像透视变换程序:如何调试缓冲区溢出问题

求大神指导,小弟万分感谢!

#include
#include
#include

using namespace cv;
using namespace std;

#define WINDOW_NAME1 "【原始图窗口】" //为窗口标题定义的宏
#define WINDOW_NAME2 "【经过perspective后的图像】" //为窗口标题定义的宏

int main( )
{
Point2f srcTriangle[3];//定义两组点,代表两个四边形
Point2f dstTriangle[3];

Mat rotMat( 3, 3, CV_32FC1 );//定义一些Mat变量
Mat warpMat( 3, 3, CV_32FC1 );
Mat srcImage, dstImage;

srcImage = imread( "picture.jpg", 1 );//加载源图像并作一些初始化
if(!srcImage.data ) { printf("读取图片错误,请确定目录下是否有imread函数指定的图片存在~! \n"); return false; } 

dstImage = Mat::zeros( srcImage.rows, srcImage.cols, srcImage.type() );// 设置目标图像的大小和类型与源图像一致

srcTriangle[0] = Point2f( 403, 189 );//设置源图像和目标图像上的四组点以计算透视变换
srcTriangle[1] = Point2f( 610, 202 );
srcTriangle[2] = Point2f( 382, 370 );
srcTriangle[3] = Point2f( 617, 379 );

dstTriangle[0] = Point2f( 320, 240);
dstTriangle[1] = Point2f( 640, 240);
dstTriangle[2] = Point2f( 320, 480);
dstTriangle[3] = Point2f( 640, 480);

warpMat = getPerspectiveTransform( srcTriangle, dstTriangle );

perspectiveTransform( srcImage, dstImage, warpMat );

imshow( WINDOW_NAME1, srcImage );
imshow( WINDOW_NAME2, dstImage );

waitKey(0);

return 0;

}

调试缓冲区溢出,主要还是分析源代码,依靠调试当然是需要的。但调试不是万能的,自己要分析一下程序哪里可能产生缓冲区溢出?
依靠调试工具,如 VS 的在出错时自动中断的功能,可能会找到出错的地方;但也可能因为溢出导致调用堆栈异常,看不到调用堆栈。