看板 C_and_CPP 關於我們 聯絡資訊
開發平台(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: http://codepad.org/2e1AFHbg 02/26 18:14
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