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

我正在试图在Java上添加一个jpg图片的sobel操作符。 我在这里找到示例:http://www.tutorialspoint.com/java_dip/applying_sobel_operator.htm,但它不起作用。 相反,它会打印黑色图像。 有人可以向我解释我做错了吗? 其他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的块什么时候被执行? 它是否被假定为您定义的Mat子类的构造函数的一部分? 话虽如此,假设这看起来像它的目的是做什么,那么有可能你的输出文件类型没有正确指定; destinationPath的价值是什么?

您是否尝试在另一个图像查看器中打开保存的文件以确定它是否是ShowImage()代码或存在错误的已保存文件?

你有没有尝试在十六进制编辑器中打开保存的文件,看看它是否有'明智的'看价值或全部为零?

链接地址: http://www.djcxy.com/p/72513.html

上一篇: Applying sobel filter on jpg picture with OpenCV 2.4.10 in Java

下一篇: What exactly is Java EE?