[英]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.