首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenCV Java内画图像格式要求

OpenCV Java内画图像格式要求
EN

Stack Overflow用户
提问于 2013-10-12 06:54:17
回答 2查看 1.9K关注 0票数 1

一直想在安卓系统上进行修复,

代码语言:javascript
复制
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);

受到了欢迎,

代码语言:javascript
复制
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个通道。对吗?

那我错过了什么?我完全不知所措。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-13 14:55:26

代码语言:javascript
复制
...
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);
...

原来,这只是一个简单的问题,摆脱阿尔法通道通过颜色转换。

票数 1
EN

Stack Overflow用户

发布于 2022-06-28 07:54:44

使用OpenCv Android的图像插入

代码语言:javascript
复制
 ImgMat = Mat()
 Maskmat = Mat()
 destmat=Mat()

 Utils.bitmapToMat(BitmapImage, ImgMat)
 Utils.bitmapToMat(BitmapMask, Maskmat)

 Imgproc.cvtColor(ImgMat, ImgMat, Imgproc.COLOR_RGB2XYZ)
 Imgproc.cvtColor(Maskmat, Maskmat, Imgproc.COLOR_BGR2GRAY)

 Photo.inpaint(ImgMat,Maskmat,destmat, 15.0, INPAINT_NS)

 InpaintBitmap= Bitmap.createBitmap(BitmapImage.getWidth(), 
 BitmapImage.getHeight(), 
 Bitmap.Config.ARGB_8888)

 Imgproc.cvtColor(destmat, destmat, Imgproc.COLOR_XYZ2RGB);

 Utils.matToBitmap(destmat, InpaintBitmap)

描述: InpaintBitmap是一幅内画彩色位图,src图像是3通道图像,而掩码位图是1通道图像。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19331442

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档