1
我想從圖像切割16件。我正在使用OpenCV
和方法submat
。OpenCV,從圖像切割件
List<Mat> listOfPieces = new ArrayList<Mat>();
Mat mat = new Mat();
Utils.bitmapToMat(bitmap1, mat);
int x = mat.cols()/4;
int y = mat.rows()/4;
for(int i=0; i<4; i++){
for(int j=0; j<4; j++){
Rect roi = new Rect(i*x ,j*y, (i+1)*x, (j+1)*y);
Mat submat = mat.submat(roi);
listOfPieces.add(submat);
}
}
我收到此錯誤:
10-06 12:42:19.842: E/cv::error()(18420): 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 cv::Mat::Mat(const cv::Mat&, const Rect&), file /hdd2/buildbot/slaves/slave_ardbeg1/50-SDK/opencv/modules/core/src/matrix.cpp, line 323
我檢查了我寶貴的roi
,如果不大於墊的尺寸更大。此代碼在for的第二個循環中崩潰。
看看[這裏](http://stackoverflow.com/questions/32870430/how-到分頻的-的OpenCV-MAT-在矩形子區域/ 32870595#32870595)。它是C++,但可以輕鬆移植。 – Miki
您應該使用接受左上角和右下角的'Rect'構造函數'' – Miki
謝謝,這有幫助。 –