c++ - opencv在访问像素点时终止运行
大家讲道理
大家讲道理 2017-04-17 15:30:29
0
2
567

我进行这样的操作:
image_backup_.at<Vec3b>(xpos + i, ypos + j - 1)[k]
就会终止程序,然后debug下发现call stack:定位到上一行image_backup_.at<Vec3b>(xpos + i, ypos + j - 1)[k]

CV_DbgAssert((unsigned)i0 < (unsigned)size.p[0]);

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回覆(2)
阿神

at函數的參數是at(行,列),而不是x、y,所以產生了越界,你需要把兩者換過來。
如果一定要用x、y,可以用at(cv::Point(x,y))。
另外opencv是會拋出異常的,可以用catch(std::exception e)來捕獲異常查看錯誤訊息。

阿神

at命名的函數一般有邊界檢查。這裡的檢查是透過斷言來實現的,即CV_DbgAssert((unsigned)i0 < (unsigned)size.p[0]);。根據表達式語意,斷言失敗的原因是座標越界"i>=size"。

請檢查xpos + iypos + j - 1的值域。注意:由於檢查時進行了無符號轉換,對於小於0的值,會變成一個較大的值。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板