简体   繁体   中英

filter2d in opencv4android

I'm trying to write a simple code in opencv4android using filter2d. but after calling the function 'filter2d', in the destination mat, i get zeros (it didn't run the function correctly).

the result should be:

  0.3750    0.5000    0.5000    0.5000    0.3750
       0         0         0         0         0
       0         0         0         0         0
       0         0         0         0         0
 -0.3750   -0.5000   -0.5000   -0.5000   -0.3750

i tried changing the source's and kernel's depth/type but it didn't help.

here's my code:

    Mat sourceMat = new Mat(5, 5, CvType.CV_32F);
    Mat convMat = new Mat(3, 3, CvType.CV_32F);
    Mat destMat = Mat.zeros(5, 5, CvType.CV_32F);

    sourceMat.put(0,0,1);
    sourceMat.put(0,1,1);
    sourceMat.put(0,2,1);
    sourceMat.put(0,3,1);
    sourceMat.put(0,4,1);
    sourceMat.put(1,0,1);
    sourceMat.put(1,1,1);
    sourceMat.put(1,2,1);
    sourceMat.put(1,3,1);
    sourceMat.put(1,4,1);
    sourceMat.put(2,0,1);
    sourceMat.put(2,1,1);
    sourceMat.put(2,2,1);
    sourceMat.put(2,3,1);
    sourceMat.put(2,4,1);
    sourceMat.put(3,0,1);
    sourceMat.put(3,1,1);
    sourceMat.put(3,2,1);
    sourceMat.put(3,3,1);
    sourceMat.put(3,4,1);
    sourceMat.put(4,0,1);
    sourceMat.put(4,1,1);
    sourceMat.put(4,2,1);
    sourceMat.put(4,3,1);
    sourceMat.put(4,4,1);

    convMat.put(0,0, 0.125);
    convMat.put(0,1, 0.5);
    convMat.put(0,2, 0.125);
    convMat.put(1,0, 0);
    convMat.put(1,1, 0);
    convMat.put(1,2, 0);
    convMat.put(2,0, -0.125);
    convMat.put(2,1, -0.5);
    convMat.put(2,2, -0.125);


    Imgproc.filter2D(sourceMat, destMat, sourceMat.depth(), convMat);

Can anyone tell my what's the problem here? is there something i'm doing wrong?

Nothing wrong here. OpenCV result is correct for the default border handling mode used in filter2d function.

You need to set the last borderType parameter to Imgproc.BORDER_CONSTANT to get your expected result.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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