Opencv DoG返回具有尺寸的空Mat对象

Opencv DoG返回具有尺寸的空Mat对象,opencv,image-processing,javacv,edge-detection,Opencv,Image Processing,Javacv,Edge Detection,我试图用不同的sigma应用于不同的高斯核 Mat gaussianKernel_1 = Imgproc.getGaussianKernel(3, .2, CvType.CV_32F); Mat gaussianKernel_1 = Imgproc.getGaussianKernel(3, 2.7, CvType.CV_32F); 在灰度图像上,通过减法得到高斯狗的差值。问题是,在应用如下所示的高斯差之后 ,我得到了带有尺寸的黑色图像 这是什么意思,为什么我没有得到一个mat对象,它包含了高斯

我试图用不同的sigma应用于不同的高斯核

Mat gaussianKernel_1 = Imgproc.getGaussianKernel(3, .2, CvType.CV_32F);
Mat gaussianKernel_1 = Imgproc.getGaussianKernel(3, 2.7, CvType.CV_32F);
在灰度图像上,通过减法得到高斯狗的差值。问题是,在应用如下所示的高斯差之后 ,我得到了带有尺寸的黑色图像

这是什么意思,为什么我没有得到一个mat对象,它包含了高斯图像的差异

    Mat gaussianKernel_0 = Imgproc.getGaussianKernel(3, .2, CvType.CV_32F);
    if (!gaussianKernel_0.empty()) {
        Mat orignalGrayScaleGaussian = new Mat();
        Imgproc.filter2D(grayScaleMats.getMatAt(0), orignalGrayScaleGaussian, CvType.CV_32F, gaussianKernel_0);
        gauss0GrayScaleMats.newMat(orignalGrayScaleGaussian);
    }

    Mat gaussianKernel_1 = Imgproc.getGaussianKernel(3, 2.7, CvType.CV_32F);
    if (!gaussianKernel_1.empty()) {
        Mat orignalGrayScaleGaussian = new Mat();
        Imgproc.filter2D(grayScaleMats.getMatAt(0), orignalGrayScaleGaussian, CvType.CV_32F, gaussianKernel_1);
        gauss1GrayScaleMats.newMat(orignalGrayScaleGaussian);
    }

    for (int i = 0; i < 5; i++) {
        Mat pyrDownDest = new Mat();

        if (i == 0) {

            Imgproc.pyrDown(MatFactory.lastAddedObj(gauss0GrayScaleMats.getMatList()), pyrDownDest);
            downSampledMats0.newMat(pyrDownDest);
            MatFactory.writeMat(FilePathUtils.newOutputPath("downSampledMat0_" + i), MatFactory.lastAddedObj(downSampledMats0.getMatList()));

        } else {

            Imgproc.pyrDown(MatFactory.lastAddedObj(downSampledMats0.getMatList()), pyrDownDest);
            downSampledMats0.newMat(pyrDownDest);
            MatFactory.writeMat(FilePathUtils.newOutputPath("downSampledMat0_" + i), MatFactory.lastAddedObj(downSampledMats0.getMatList()));
        }
    }

    for (int i = 0; i < 5; i++) {
        Mat pyrDownDest = new Mat();

        if (i == 0) {

            Imgproc.pyrDown(MatFactory.lastAddedObj(gauss1GrayScaleMats.getMatList()), pyrDownDest);
            downSampledMats1.newMat(pyrDownDest);
            MatFactory.writeMat(FilePathUtils.newOutputPath("downSampledMat1_" + i), MatFactory.lastAddedObj(downSampledMats1.getMatList()));

        } else {

            Imgproc.pyrDown(MatFactory.lastAddedObj(downSampledMats1.getMatList()), pyrDownDest);
            downSampledMats1.newMat(pyrDownDest);
            MatFactory.writeMat(FilePathUtils.newOutputPath("downSampledMat1_" + i), MatFactory.lastAddedObj(downSampledMats1.getMatList()));
        }
    }

    Log.D(TAG, "MainClass", "downSampledMats0Size: " + downSampledMats0.getMatList().size());
    Log.D(TAG, "MainClass", "downSampledMats1Size: " + downSampledMats1.getMatList().size());

    Mat desResize0 = new Mat();
    Mat desResize1 = new Mat();
    Imgproc.resize(downSampledMats0.getMatAt(3), desResize0, downSampledMats0.getMatAt(2).size());
    Imgproc.resize(downSampledMats1.getMatAt(3), desResize1, downSampledMats1.getMatAt(2).size());


    Mat DoG = new Mat();
    Core.subtract(desResize0, desResize1, DoG);
    if (!DoG.empty()){
        MatFactory.writeMat(FilePathUtils.newOutputPath("DoG"), DoG);
    } else {
        Log.W(TAG, "MainClass", "DoG mat is empty");
    }
}
Mat gaussianKernel_0=Imgproc.getGaussianKernel(3.2,CvType.CV_32F);
如果(!gaussianKernel_0.empty()){
Mat orignalGrayScaleGaussian=新Mat();
Imgproc.filter2D(灰度矩阵getMatAt(0),原始灰度等级高斯,CvType.CV_32F,gaussianKernel_0);
Gaus0灰度矩阵newMat(原始Rayscalegaussian);
}
Mat gaussianKernel_1=Imgproc.getGaussianKernel(3,2.7,CvType.CV_32F);
如果(!gaussianKernel_1.empty()){
Mat orignalGrayScaleGaussian=新Mat();
Imgproc.filter2D(灰度矩阵getMatAt(0),原始灰度等级高斯,CvType.CV_32F,gaussianKernel_1);
gauss1GrayScaleMats.newMat(原始Rayscalegaussian);
}
对于(int i=0;i<5;i++){
Mat pyrDownDest=新Mat();
如果(i==0){
pyrDown(MatFactory.lastaddobj(gauss0GrayScaleMats.getMatList()),pyrDownDest);
下采样垫0.newMat(Pyrdownst);
MatFactory.writeMat(FilePathUtils.newOutputPath(“downSampledMat0_“+i),MatFactory.lastaddobj(downSampledMat0.getMatList());
}否则{
Imgproc.pyrDown(MatFactory.lastaddodobj(downSampledMats0.getMatList()),pyrDownDest);
下采样垫0.newMat(Pyrdownst);
MatFactory.writeMat(FilePathUtils.newOutputPath(“downSampledMat0_“+i),MatFactory.lastaddobj(downSampledMat0.getMatList());
}
}
对于(int i=0;i<5;i++){
Mat pyrDownDest=新Mat();
如果(i==0){
pyrDown(MatFactory.lastaddobj(gauss1GrayScaleMats.getMatList()),pyrDownDest);
下采样垫1.newMat(最下采样垫);
MatFactory.writeMat(FilePathUtils.newOutputPath(“downSampledMat1_“+i),MatFactory.lastaddobj(downSampledMat1.getMatList());
}否则{
Imgproc.pyrDown(MatFactory.lastaddodobj(downSampledMats1.getMatList()),pyrDownDest);
下采样垫1.newMat(最下采样垫);
MatFactory.writeMat(FilePathUtils.newOutputPath(“downSampledMat1_“+i),MatFactory.lastaddobj(downSampledMat1.getMatList());
}
}
Log.D(标记“MainClass”,“downSampledMats0Size:+downSampledMats0.getMatList().size());
Log.D(标记“MainClass”,“downSampledMats1Size:+downSampledMats1.getMatList().size());
Mat desResize0=新Mat();
Mat desResize1=新Mat();
resize(downSampledMats0.getMatAt(3)、desResize0、downSampledMats0.getMatAt(2.size());
resize(downSampledMats1.getMatAt(3)、desResize1、downSampledMats1.getMatAt(2.size());
垫狗=新垫();
Core.subtract(减大小0,减大小1,DoG);
如果(!DoG.empty()){
MatFactory.writeMat(FilePathUtils.newOutputPath(“DoG”),DoG;
}否则{
Log.W(标签“MainClass”,“狗垫为空”);
}
}