程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> c++-圖像透視變換程序:如何調試緩沖區溢出問題

c++-圖像透視變換程序:如何調試緩沖區溢出問題

編輯:編程綜合問答
圖像透視變換程序:如何調試緩沖區溢出問題

求大神指導,小弟萬分感謝!

#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 的在出錯時自動中斷的功能,可能會找到出錯的地方;但也可能因為溢出導致調用堆棧異常,看不到調用堆棧。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved