作者Lawaly ()
看板C_and_CPP
標題[問題] OpenCV Error: Assertion Failed
時間Tue Feb 26 15:49:49 2013
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
VC++ 2010
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
OpenCV
問題(Question):
我執行的動作是讀取兩張圖片來進行比對。
圖片數量有幾十張,所以用一個迴圈依序讀進兩張圖片。
例:第一次讀01.jpg + 02.jpg
第二次02.jpg留著,再讀一張新的03.jpg
比對時只針對特定區域,故使用cv::MAT(圖, cv::Rect(x,y,width,height))截取區域
錯誤結果(Wrong Output):
迴圈第一次順利完成,
進行第二次時,02.jpg也順利截取特定區域,
03.jpg讀入也沒有問題,但是截取區域時出現下面錯誤
OpenCV Error: Assertion failed (0 <= roi.x && 0 <= roi.width && roi.x +
roi.width <= m.cols && 0 <= roi.y && 0 <= roi.height && roi.y + roi.height <=
m.rows) in Mat, file
/Users/user/slave/ios_framework/src/opencv/modules/core/src/matrix.cpp, line
322
google之後發現很可能是OpenCV本身的bug,
不知道有沒有辦法避開這個bug?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.46.8
→ Raymond0710:程式碼貼上來看看 02/26 16:02
推 amozartea:這個通常是讀圖以後的資源沒釋放 02/26 17:07
→ amozartea:導致某部份memory leak 02/26 17:07
→ amozartea:讀完之後的東西全都殺光光看看 02/26 17:08
→ Lawaly:比對部份的code應該跟問題無關就省略沒貼了 02/26 18:15
推 amozartea:迴圈裡imageRefCrop還有imageNextCrop都釋放掉看看 02/26 19:01
推 Raymond0710:你的roi是根據滑鼠事件取地的點 寫一個判斷式不要讓 02/27 01:55
→ Raymond0710:roi超過圖的範圍 02/27 01:56
推 Raymond0710:也就是ROI的左上角與右下角座標都要落在圖像中 02/27 01:59
→ Lawaly:a大的意思是imageRefCrop.release()嗎 我有試過,並未解決 02/27 08:41
→ Lawaly:R大,理論上(至少在第二次迴圈)點都還不會超出圖像,詳細座 02/27 08:41
→ Lawaly:標我也有cout檢查過了 02/27 08:42