【问题标题】:OpenCV Android: Define and save ROI in new MatOpenCV Android:在新 Mat 中定义和保存 ROI
【发布时间】:2015-03-31 17:49:15
【问题描述】:

我正在尝试将我的图像的一部分切片(裁剪)到另一个图像,以便可以单独处理它。我找到了轮廓,现在尝试将每个轮廓保存在新 Mat 中,但它给出了错误

Mat crop;
Imgproc.findContours(m, contours, new Mat() ,Imgproc.RETR_EXTERNAL , Imgproc.CHAIN_APPROX_SIMPLE);
for(int i=0; i <contours.size();i++)
{
    Rect rect = Imgproc.boundingRect(contours.get(i));
    crop = m.submat(rect);
}

Utils.matToBitmap(crop, bm);
ImageView iv = (ImageView) findViewById(R.id.imageView1);
iv.setImageBitmap(bm);

这里 m 是我保存图像的 Mat

错误:

【问题讨论】:

  • 尝试让裁剪垫的尺寸大于投资回报率
  • 能否提供代码?

标签: java android opencv image-processing runtime-error


【解决方案1】:

在这种情况下我总是做的是使用带有矩形的构造函数创建一个新的垫子:

Mat cropped = new Mat(mOriginal, boudingRect);

编辑:

您的位图也应该具有相同的大小:

bm = Bitmap.createBitmap(crop.size().width,crop.size().height, Bitmap.Config.ARGB_8888);

【讨论】:

  • @HelpingDesk 问题出在位图上。您正在尝试保存在不同大小的位图中。您需要创建与crop相同大小的bm。
  • 已编辑。请注意,当您调用matToBitmap 时,opencv 将需要一个与 mat 大小相同的位图。
  • 方法 createBitmap 对参数无效 (double,double,Bitmap.config) ??
  • 好吧,感谢您的帮助@Pedro Oliveira 它有效,但我没有得到我想要的结果:/您能否在这里查看我的问题以便更好地理解? stackoverflow.com/questions/29184697/…
  • 请记住,您只是使用最后一张裁剪的图像。如果您想获得所有裁剪的矩形,您需要重新编写for 代码以保存 for 内的每个边界矩形。
猜你喜欢
  • 2013-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-26
  • 2012-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多