[問題] OpenCV: Assertion Failed in cv::Mat

看板C_and_CPP作者時間11年前 (2013/02/26 15:49), 編輯推噓4(409)
留言13則, 3人參與, 最新討論串1/1
開發平台(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

02/26 16:02, , 1F
程式碼貼上來看看
02/26 16:02, 1F

02/26 17:07, , 2F
這個通常是讀圖以後的資源沒釋放
02/26 17:07, 2F

02/26 17:07, , 3F
導致某部份memory leak
02/26 17:07, 3F

02/26 17:08, , 4F
讀完之後的東西全都殺光光看看
02/26 17:08, 4F

02/26 18:14, , 5F
02/26 18:14, 5F

02/26 18:15, , 6F
比對部份的code應該跟問題無關就省略沒貼了
02/26 18:15, 6F

02/26 19:01, , 7F
迴圈裡imageRefCrop還有imageNextCrop都釋放掉看看
02/26 19:01, 7F

02/27 01:55, , 8F
你的roi是根據滑鼠事件取地的點 寫一個判斷式不要讓
02/27 01:55, 8F

02/27 01:56, , 9F
roi超過圖的範圍
02/27 01:56, 9F

02/27 01:59, , 10F
也就是ROI的左上角與右下角座標都要落在圖像中
02/27 01:59, 10F

02/27 08:41, , 11F
a大的意思是imageRefCrop.release()嗎 我有試過,並未解決
02/27 08:41, 11F

02/27 08:41, , 12F
R大,理論上(至少在第二次迴圈)點都還不會超出圖像,詳細座
02/27 08:41, 12F

02/27 08:42, , 13F
標我也有cout檢查過了
02/27 08:42, 13F
文章代碼(AID): #1HB6aVkc (C_and_CPP)