簡體   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