【问题标题】:OpenCV Java inpaint image format requirementOpenCV Java inpaint 图像格式要求
【发布时间】:2013-10-13 22:55:26
【问题描述】:

一直在尝试让修复在 Android 上工作,

int height = (int) viewMat.size().height;
int width = (int) viewMat.size().width;

Mat maskMat = new Mat();
maskMat.create(viewMat.size(), CvType.CV_8U);
maskMat.setTo(bColor);

Point r1 = new Point(width/2-width/10, height/2-height/10);
Point r2 = new Point(width/2+width/10, height/2+height/10);
Scalar color = new Scalar(1);

Core.rectangle(maskMat, r1, r2, color, Core.FILLED);

outMat.create(viewMat.size(), CvType.CV_8UC3);

viewMat.convertTo(outMat, CvType.CV_8UC3);

Photo.inpaint(outMat, maskMat, outMat, 1, Photo.INPAINT_TELEA);

受到欢迎,

Caused by: CvException [org.opencv.core.CvException: /home/reports/ci/slave_desktop/50-SDK/opencv/modules/photo/src/inpaint.cpp:744: 
error: (-210) Only 8-bit 1-channel and 3-channel input/output images are supported in function void cvInpaint(const CvArr*, const CvArr*, CvArr*, double, int)

在日志中。

已经尝试了几个小时以各种方式创建 Mats,但没有成功。

CV_8U = 每通道 8 位,1 通道。对吧?

CV_8UC3 = 每通道 8 位,3 通道。对吧?

那么我错过了什么?我完全被难住了。

【问题讨论】:

标签: java android opencv


【解决方案1】:
...
Point r2 = new Point(width/2+width/10, height/2+height/10);
Scalar color = new Scalar(1);

Core.rectangle(maskMat, r1, r2, color, Core.FILLED);

Imgproc.cvtColor(viewMat, outMat, Imgproc.COLOR_RGBA2RGB);

Photo.inpaint(outMat, maskMat, outMat, 1, Photo.INPAINT_TELEA);
...

原来这只是通过颜色转换摆脱 Alpha 通道的问题。

【讨论】:

猜你喜欢
  • 2017-08-31
  • 2014-05-24
  • 1970-01-01
  • 2020-07-12
  • 2013-04-26
  • 1970-01-01
  • 2012-12-17
  • 2020-07-13
相关资源
最近更新 更多