0

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);
4

1 に答える 1

5

まず、使用していない理由はありますか

Imgproc.Sobel(Mat src, Mat dst, int ddepth, int dx, int dy);

ここで使用されている Java 構文がよくわかりません。sのブロックはいつput実行されますか? あなたが定義する Mat のサブクラスのコンストラクタの一部と見なされますか? そうは言っても、これが意図したように見えると仮定すると、出力ファイルの種類が正しく指定されていない可能性があります。の値はdestinationPath何ですか?

保存したファイルを別の画像ビューアで開いてみて、問題がShowImage()コードなのか保存されたファイルなのかを判断しましたか?

保存したファイルを 16 進エディタで開いて、「適切な」外観の値を持っているか、すべてゼロであるかを確認しましたか?

于 2015-05-18T01:20:04.883 に答える