[問題] vc++ 2010 & openCV2.4.7下SEHException

看板C_and_CPP (C/C++)作者 (hay)時間11年前 (2014/08/05 13:27), 編輯推噓1(106)
留言7則, 2人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Visual C++ 2010 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) OpenCV2.4.7 問題(Question): 以下是程式碼(compiler可以過) cv::Mat src1 = cv::imread("D:\\save\\Result1.bmp"); cv::Mat mask = cv::imread("D:\\save\\Result.bmp"); //mask為已經處理過可以用的影像 cv::Mat dst1; inpaint(src1, mask, dst1, 1,cv::INPAINT_TELEA); imshow("image", dst1); 餵入的資料(Input): 預期的正確結果(Expected Output): 錯誤結果(Wrong Output): 跑到imshow這一行時會跑出下面的視窗, 類型 'System.Runtime.InteropServices.SEHException' 的未處理例外狀況 其他資訊: 外部元件傳回例外狀況。 想要請問一下這是為什麼呢?有什麼解決方法?謝謝。 程式碼(Code):(請善用置底文網頁, 記得排版) 補充說明(Supplement): 目前認為是inpaint這個function有問題,因為註解掉後就沒這個問題了, 可是不知道原因。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.113.149.80 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1407216420.A.DE3.html

08/05 19:29, , 1F
catch seh exception看是哪一種
08/05 19:29, 1F

08/05 19:31, , 2F
GetExceptionCode
08/05 19:31, 2F

08/05 23:09, , 3F
因為_try __execpt不能用在有解構子的地方
08/05 23:09, 3F

08/05 23:10, , 4F
所以我用try catch 得到的錯誤是:
08/05 23:10, 4F

08/05 23:10, , 5F
外部元件傳回例外狀況
08/05 23:10, 5F

08/06 16:56, , 6F
最後找到原因了,mask的格式錯誤
08/06 16:56, 6F

08/06 16:57, , 7F
必須要是8-bits 1-channel。謝謝QQ29的回覆。
08/06 16:57, 7F
文章代碼(AID): #1Ju6iatZ (C_and_CPP)
文章代碼(AID): #1Ju6iatZ (C_and_CPP)