繁体   English   中英

如何使用OpenCV4Android执行卷积

[英]How to perform convolution with OpenCV4Android

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

 -1 -2 -1
  0  0  0
  1  2  1

并添加使用卷积对我的图像执行Sobel过滤。 我过去可以在OpenCV C ++中这样实现:

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);

我在OpenCV4Android中找不到cvSet2D方法,但是有cvFilter2D。 谁能给我提示/示例,我该怎么做?

如果您使用的是Java API,则可以在此处查看Filter2D文档

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

    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);

感谢您的回答。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM