JAVA画像処理はOpenCvとJVMに基づいています-----画像オブジェクトの強調表示(マスク)

OpenCv は、画像内の線を強調表示できる Canny と呼ばれる非常に便利な関数を提供します。

OpenCv の canny 関数は、グレースケール マトリックスの輪郭を検出できます。私たちがしなければならないのは入力行列をグレースケール イメージに変換することだけで、残りは Canny が行います。
             Canny 関数には次のパラメータが含まれます。
             ソース マトリックス、
             ターゲット マトリックス
             、下限しきい値、150.0 上限しきい値を使用、通常は              下限しきい値のアパーチャの
             2 倍または 3 倍、3 から 7 までの奇数、ここでは 3 を使用します。
絞り値が大きいほど、より多くの輪郭が検出されます
             。L2 勾配は、一時的に true に設定されます
。Canny は、コア ピクセルとその隣接ピクセルを含む畳み込み行列を使用して勾配値を取得します。勾配値が上限しきい値より大きい場合、境界として検出されます。勾配値が高しきい値と低しきい値の間にあり、それに接続されている高しきい値がある場合、その値も保持されます。

Core クラスの cvtColor 関数を通じて、OpenCv は色空間を簡単に変更できます。

この記事にはグレースケールのチュートリアルがあります: OpenCv および JVM に基づく JAVA 画像処理-----画像のロードと保存

以下はコードを直接示します。

org.opencv.core.CvType をインポートします。
org.opencv.core.Core をインポートします。
org.opencv.core.Mat をインポートします。
折り紙をインポートします。折り紙;
org.opencv.core.Scalar をインポートします。
org.opencv.imgproc.Imgproc をインポートします。
org.opencv.imgcodecs.Imgcodecs をインポートします。
public class HelloCv {     public static void main(String[] args) throws Exception {       System.loadLibrary(Core.NATIVE_LIBRARY_NAME);       Mat tools = Imgcodecs.imread("./images/dw.jpg");       Imgproc.cvtColor(tools,tools,Imgproc.COLOR_RGB2GRAY);、、       Imgproc.Canny(tools,tools,900,1100,5,true);       Imgcodecs.imwrite("./images/dw-1.png",tools);       Mat inverTools = tools.clone();







      Core.bitwise_not(inverTools, inverTools);
      Imgcodecs.imwrite("./images/dw.png",inverTools);
      Mat kittens = Imgcodecs.imread("./images/dw.jpg");
      Imgproc.cvtColor(kittens, kittens,Imgproc.COLOR_RGB2GRAY);//変換色
      Imgproc.Canny(kittens,kittens,900,1100,5,true);
      Core.bitwise_not(kittens, kittens);//オブジェクトを識別しやすくするために色の操作を反転します

        // ターゲットをクリックして
      マットを作成します target = new Mat(kittens.height(),kittens.width(),CvType.CV_8UC3,new Scalar(0,0,255));
      Mat bg = Imgcodecs.imread("./images/dw.jpg");
      Imgproc.resize(bg,bg,target.size());
      bg.copyTo(ターゲット,子猫);
      Imgcodecs.imwrite("./images/target.png",target);
    }
} }

 

 

 

おすすめ

転載: blog.csdn.net/JavaLLU/article/details/122782773