首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用OpenCV4Android进行卷积

如何用OpenCV4Android进行卷积
EN

Stack Overflow用户
提问于 2013-12-06 00:18:31
回答 2查看 549关注 0票数 1

我是OpenCV4Android的新用户,目前我很难找到执行卷积的方法/提示。例如,我不想使用Imgproc过滤器函数,因为我并不总是能够理解参数。我想要创建我自己的垫子,比方说Sobels矩阵:

代码语言:javascript
复制
 -1 -2 -1
  0  0  0
  1  2  1

并加入卷积对我的图像进行Sobel滤波。我可以在过去的OpenCV C++中这样做:

代码语言:javascript
复制
CvMat* sobelMat = cvCreateMat(3,3,CV_32F);

cvSet2D(sobelMat,2,0,cvScalarAll(-1.0));
cvSet2D(sobelMat,2,1,cvScalarAll(0.0));
cvSet2D(sobelMat,2,2,cvScalarAll(1.0));
cvSet2D(sobelMat,1,0,cvScalarAll(-2.0));
cvSet2D(sobelMat,1,1,cvScalarAll(0.0));
cvSet2D(msobelMat,1,2,cvScalarAll(2.0));
cvSet2D(sobelMat,0,0,cvScalarAll(-1.0));
cvSet2D(sobelMat,0,1,cvScalarAll(0.0));
cvSet2D(sobelMat,0,2,cvScalarAll(1.0));

cvFilter2D(SobelImageGrey_PION,SobelImageGrey_PION,sobelMat);

我在cvSet2D中找不到OpenCV4Android方法,但是有cvFilter2D。有人能给我一个提示吗?我该怎么做?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-06 05:45:43

如果您使用的是Java,您可以看到Filter2D文档这里

票数 0
EN

Stack Overflow用户

发布于 2013-12-10 20:06:19

好的,我找到了创建一个内核并填充它的方法。有这样的例子:

代码语言:javascript
复制
    mSepiaKernel = new Mat(4, 4, CvType.CV_32F);
    mSepiaKernel.put(0, 0, /* R */0.189f, 0.769f, 0.393f, 0f);
    mSepiaKernel.put(1, 0, /* G */0.168f, 0.686f, 0.349f, 0f);
    mSepiaKernel.put(2, 0, /* B */0.131f, 0.534f, 0.272f, 0f);
    mSepiaKernel.put(3, 0, /* A */0.000f, 0.000f, 0.000f, 1f);

谢谢你的回答。

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

https://stackoverflow.com/questions/20413553

复制
相关文章

相似问题

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