init - 初始化项目
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import org.opencv.core.Core;
|
||||
import org.opencv.core.Mat;
|
||||
import org.opencv.core.MatOfFloat;
|
||||
import org.opencv.core.MatOfInt;
|
||||
import org.opencv.core.Range;
|
||||
import org.opencv.imgcodecs.Imgcodecs;
|
||||
import org.opencv.imgproc.Imgproc;
|
||||
|
||||
class CompareHist {
|
||||
public void run(String[] args) {
|
||||
//! [Load three images with different environment settings]
|
||||
if (args.length != 3) {
|
||||
System.err.println("You must supply 3 arguments that correspond to the paths to 3 images.");
|
||||
System.exit(0);
|
||||
}
|
||||
Mat srcBase = Imgcodecs.imread(args[0]);
|
||||
Mat srcTest1 = Imgcodecs.imread(args[1]);
|
||||
Mat srcTest2 = Imgcodecs.imread(args[2]);
|
||||
if (srcBase.empty() || srcTest1.empty() || srcTest2.empty()) {
|
||||
System.err.println("Cannot read the images");
|
||||
System.exit(0);
|
||||
}
|
||||
//! [Load three images with different environment settings]
|
||||
|
||||
//! [Convert to HSV]
|
||||
Mat hsvBase = new Mat(), hsvTest1 = new Mat(), hsvTest2 = new Mat();
|
||||
Imgproc.cvtColor( srcBase, hsvBase, Imgproc.COLOR_BGR2HSV );
|
||||
Imgproc.cvtColor( srcTest1, hsvTest1, Imgproc.COLOR_BGR2HSV );
|
||||
Imgproc.cvtColor( srcTest2, hsvTest2, Imgproc.COLOR_BGR2HSV );
|
||||
//! [Convert to HSV]
|
||||
|
||||
//! [Convert to HSV half]
|
||||
Mat hsvHalfDown = hsvBase.submat( new Range( hsvBase.rows()/2, hsvBase.rows() - 1 ), new Range( 0, hsvBase.cols() - 1 ) );
|
||||
//! [Convert to HSV half]
|
||||
|
||||
//! [Using 50 bins for hue and 60 for saturation]
|
||||
int hBins = 50, sBins = 60;
|
||||
int[] histSize = { hBins, sBins };
|
||||
|
||||
// hue varies from 0 to 179, saturation from 0 to 255
|
||||
float[] ranges = { 0, 180, 0, 256 };
|
||||
|
||||
// Use the 0-th and 1-st channels
|
||||
int[] channels = { 0, 1 };
|
||||
//! [Using 50 bins for hue and 60 for saturation]
|
||||
|
||||
//! [Calculate the histograms for the HSV images]
|
||||
Mat histBase = new Mat(), histHalfDown = new Mat(), histTest1 = new Mat(), histTest2 = new Mat();
|
||||
|
||||
List<Mat> hsvBaseList = Arrays.asList(hsvBase);
|
||||
Imgproc.calcHist(hsvBaseList, new MatOfInt(channels), new Mat(), histBase, new MatOfInt(histSize), new MatOfFloat(ranges), false);
|
||||
Core.normalize(histBase, histBase, 0, 1, Core.NORM_MINMAX);
|
||||
|
||||
List<Mat> hsvHalfDownList = Arrays.asList(hsvHalfDown);
|
||||
Imgproc.calcHist(hsvHalfDownList, new MatOfInt(channels), new Mat(), histHalfDown, new MatOfInt(histSize), new MatOfFloat(ranges), false);
|
||||
Core.normalize(histHalfDown, histHalfDown, 0, 1, Core.NORM_MINMAX);
|
||||
|
||||
List<Mat> hsvTest1List = Arrays.asList(hsvTest1);
|
||||
Imgproc.calcHist(hsvTest1List, new MatOfInt(channels), new Mat(), histTest1, new MatOfInt(histSize), new MatOfFloat(ranges), false);
|
||||
Core.normalize(histTest1, histTest1, 0, 1, Core.NORM_MINMAX);
|
||||
|
||||
List<Mat> hsvTest2List = Arrays.asList(hsvTest2);
|
||||
Imgproc.calcHist(hsvTest2List, new MatOfInt(channels), new Mat(), histTest2, new MatOfInt(histSize), new MatOfFloat(ranges), false);
|
||||
Core.normalize(histTest2, histTest2, 0, 1, Core.NORM_MINMAX);
|
||||
//! [Calculate the histograms for the HSV images]
|
||||
|
||||
//! [Apply the histogram comparison methods]
|
||||
for( int compareMethod = 0; compareMethod < 4; compareMethod++ ) {
|
||||
double baseBase = Imgproc.compareHist( histBase, histBase, compareMethod );
|
||||
double baseHalf = Imgproc.compareHist( histBase, histHalfDown, compareMethod );
|
||||
double baseTest1 = Imgproc.compareHist( histBase, histTest1, compareMethod );
|
||||
double baseTest2 = Imgproc.compareHist( histBase, histTest2, compareMethod );
|
||||
|
||||
System.out.println("Method " + compareMethod + " Perfect, Base-Half, Base-Test(1), Base-Test(2) : " + baseBase + " / " + baseHalf
|
||||
+ " / " + baseTest1 + " / " + baseTest2);
|
||||
}
|
||||
//! [Apply the histogram comparison methods]
|
||||
}
|
||||
}
|
||||
|
||||
public class CompareHistDemo {
|
||||
public static void main(String[] args) {
|
||||
// Load the native OpenCV library
|
||||
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
|
||||
|
||||
new CompareHist().run(args);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user