Java中OpenCV 2.4.10在jpg图片上应用sobel过滤器

Java中OpenCV 2.4.10在jpg图片上应用sobel过滤器,java,opencv,sobel,Java,Opencv,Sobel,我试图用Java在jpg图片上添加sobel操作符。我在这里找到了一个例子:但它不起作用。相反,它打印黑色图像。有人能解释一下我做错了什么吗?其他imgproc函数运行良好 这是我的密码: Mat sourceImage = Highgui.imread(sourcePath, Highgui.CV_LOAD_IMAGE_GRAYSCALE); Mat destinationImage = new Mat(sourceImage.rows(), sourceImage.cols(),

我试图用Java在jpg图片上添加sobel操作符。我在这里找到了一个例子:但它不起作用。相反,它打印黑色图像。有人能解释一下我做错了什么吗?其他imgproc函数运行良好

这是我的密码:

 Mat sourceImage = Highgui.imread(sourcePath,  Highgui.CV_LOAD_IMAGE_GRAYSCALE);
    Mat destinationImage = new Mat(sourceImage.rows(), sourceImage.cols(), sourceImage.type());

    Mat kernel = new Mat(kernelSize,kernelSize, CvType.CV_32F){
        {
           put(0,0,-1);
           put(0,1,0);
           put(0,2,1);

           put(1,0-2);
           put(1,1,0);
           put(1,2,2);

           put(2,0,-1);
           put(2,1,0);
           put(2,2,1);
        }
     };      

    Imgproc.filter2D(sourceImage, destinationImage, -1, kernel);          
    Highgui.imwrite(destinationPath, destinationImage);

    //display
    new ShowImage(sourcePath, sourceImage);
    new ShowImage(destinationPath, destinationImage);

首先,你不使用的原因是什么

Imgproc.Sobel(Mat src, Mat dst, int ddepth, int dx, int dy);
我不确定这里使用的Java语法。
put
s块何时执行?是否假定它是您定义的Mat子类的构造函数的一部分?话虽如此,假设这样做的目的看起来是这样的,那么您的输出文件类型可能没有正确指定;
destinationPath
的值是多少

您是否尝试过在替代图像查看器中打开保存的文件,以确定是
ShowImage()
代码还是保存的文件出错


您是否尝试过在十六进制编辑器中打开保存的文件,以查看它是否具有“合理”的外观值或是否全部为零?

首先,您不使用的原因是什么

Imgproc.Sobel(Mat src, Mat dst, int ddepth, int dx, int dy);
我不确定这里使用的Java语法。
put
s块何时执行?是否假定它是您定义的Mat子类的构造函数的一部分?话虽如此,假设这样做的目的看起来是这样的,那么您的输出文件类型可能没有正确指定;
destinationPath
的值是多少

您是否尝试过在替代图像查看器中打开保存的文件,以确定是
ShowImage()
代码还是保存的文件出错

您是否尝试过在十六进制编辑器中打开保存的文件,以查看它是否具有“合理”的值或是否全部为零