我是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);我在cvSet2D中找不到OpenCV4Android方法,但是有cvFilter2D。有人能给我一个提示吗?我该怎么做?
发布于 2013-12-06 05:45:43
如果您使用的是Java,您可以看到Filter2D文档这里
发布于 2013-12-10 20:06:19
好的,我找到了创建一个内核并填充它的方法。有这样的例子:
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);谢谢你的回答。
https://stackoverflow.com/questions/20413553
复制相似问题