2014-02-20 31 views
1

我想使用calcOpticalFlowPyrLK進行功能跟蹤。函數的用法如下使用calcOpticalFlowPyrLK與OpenCV 2.3.1錯誤

TermCriteria termcrit(CV_TERMCRIT_ITER | CV_TERMCRIT_EPS,20,0.03);

Size winSize(31,31);

vector < uchar> status;

vector < float> err; (prevGray,grey,point [0],point [1],status,err,winSize,3,termcrit,0,0,0.001);以及其中,

所有的參數都是正確的。在點[0]中已經有一組點。但是,當我嘗試執行該程序時,它會產生以下錯誤。我正在使用Visual C++ 2010.

.....................................

GFFER.exe中0x74c426df(msvcr100.dll)的第一次機會異常:0xC0000005:訪問衝突寫入位置0x058fe000。 GFFER.exe中的0x74c426df(msvcr100.dll)未處理的異常:0xC0000005:訪問衝突寫入位置0x058fe000。

.............................................

你有什麼想法我該如何解決這個問題。

在此先感謝!

+0

檢查prevGray,灰色是否已正確初始化。 2D點矢量也一樣。您應該在初始化這些變量的位置提供代碼,以便爲您的問題提供更多的上下文。目前,錯誤提示您的代碼嘗試訪問可能未分配的內存。但僅僅從你提供的幾行代碼中很難分辨出來。 – lightalchemist

+0

我有一個類似的問題,通過從調試切換到發佈解決。雖然我不確定問題的根本原因是什麼,或者爲什麼這會解決問題。 – NickF

回答

0

訪問衝突寫入位置

的錯誤似乎寫入數據時未初始化的位置出現。 在代碼中,點[1]狀態ERR是其中寫入發生的唯一位置。

狀態和錯誤和正確定義。該問題必須與point[1]。它是vector<Point2f>的類型。

爲什麼不嘗試使用兩個單獨的向量而不是矢量數組,比如point0 point1。