OpenCV Javaライブラリを使用して2つの画像の要点を一致させる方法は?
drawMatches() org.opencv.features2d.Feature2Dのメソッド クラスは、指定された2つの画像のキーポイント間の一致を見つけて、それらを描画します。このメソッドは、次のパラメーターを受け入れます-
-
src1 −マットのオブジェクト 最初のソース画像を表すクラス。
-
キーポイント1 − MatOfKeyPointのオブジェクト 最初のソース画像のキーポイントを表すクラス。
-
src2 −2番目のソース画像を表すMatクラスのオブジェクト。
-
keypoints2 − MatOfKeyPointのオブジェクト 2番目のソース画像のキーポイントを表すクラス。
-
matchs1to2 −最初の画像から2番目の画像に一致します。これは、keypoints1[i]がkeypoints2[matches[i]]に対応するポイントを持っていることを意味します。
-
dst −宛先画像を表すMatクラスのオブジェクト。
したがって、2つの画像の要点を一致させるために-
-
imread()を使用して2つのソース画像を読み取ります メソッド。
-
detect()を使用して、2つの画像の要点を取得します メソッド。
-
drawMatches()を使用して、一致するものを見つけて描画します メソッド。
例
import org.opencv.core.Core; import org.opencv.core.Mat; import org.opencv.core.MatOfDMatch; import org.opencv.core.MatOfKeyPoint; import org.opencv.features2d.FastFeatureDetector; import org.opencv.features2d.Features2d; import org.opencv.highgui.HighGui; import org.opencv.imgcodecs.Imgcodecs; public class MatchingKeypoints { public static void main(String args[]) throws Exception { //Loading the OpenCV core library System.loadLibrary( Core.NATIVE_LIBRARY_NAME ); //Reading the source images String file1 ="D:\\Images\\feature1.jpg"; Mat src1 = Imgcodecs.imread(file1); String file2 ="D:\\Images\\feature2.jpg"; Mat src2 = Imgcodecs.imread(file2); //Creating an empty matrix to store the destination image Mat dst = new Mat(); FastFeatureDetector detector = FastFeatureDetector.create(); //Detecting the key points in both images MatOfKeyPoint keyPoints1 = new MatOfKeyPoint(); detector.detect(src1, keyPoints1); MatOfKeyPoint keyPoints2 = new MatOfKeyPoint(); detector.detect(src2, keyPoints2); MatOfDMatch matof1to2 = new MatOfDMatch(); Features2d.drawMatches(src1, keyPoints1, src2, keyPoints2, matof1to2, dst); HighGui.imshow("Feature Matching", dst); HighGui.waitKey(); } }
入力画像
Image1 −
Image2 −
出力
-
Java OpenCVを使用して2つの画像に対してビット単位のOR演算を実行するにはどうすればよいですか?
bitwise_or()を使用して、ビット単位または2つの画像間を計算できます org.opencv.core.Coreのメソッド クラス。 このメソッドは、3つのマットを受け入れます ソース、デスティネーション、および結果のマトリックスを表すオブジェクトは、ソースマトリックスの各要素のビット単位の論理和を計算し、結果をデスティネーションマトリックスに格納します。 例 次のJavaの例では、画像をバイナリとグレースケールに変換し、結果のビット単位の論理和を計算しています。 import org.opencv.core.Core; import org.opencv.core.Mat;
-
Java OpenCVライブラリを使用してイメージを作成するにはどうすればよいですか?
OpenCVライブラリを使用すると、画像フィルタリング、幾何学的画像変換、色空間変換、ヒストグラムなどの画像処理操作を実行できます。 画像を書く Imgcodecsクラスのimread()メソッドを使用して画像のコンテンツを読み取るたびに、結果がMatrixオブジェクトに読み込まれます。 imwrite()メソッドを使用してイメージを書き込み/保存できます。これは2つのパラメータ、つまり-を受け入れます ファイル −結果を保存するファイルパスを表す文字列値。 Img −保存する画像のデータを含むマトリックスオブジェクト。 例 次のJavaの例は画像の内容を読み取りますc