java直方图算法,用 Java 使用 OpenCV 编写直方图处理程序
用Java使用OpenCV编写直方图处理程序:(一)计算一个图像的直方图importjava.util.ArrayList;importorg.opencv.core.Core;importorg.opencv.core.CvType;importorg.opencv.core.Mat;importorg.opencv.core.MatOfFloat;importorg.opencv.core.M
用Java使用OpenCV编写直方图处理程序:
(一)计算一个图像的直方图
importjava.util.ArrayList;
importorg.opencv.core.Core;
importorg.opencv.core.CvType;
importorg.opencv.core.Mat;
importorg.opencv.core.MatOfFloat;
importorg.opencv.core.MatOfInt;
importorg.opencv.core.Scalar;
importorg.opencv.imgcodecs.Imgcodecs;
importorg.opencv.imgproc.Imgproc;
public class MyHistograms {
// 加载OpenCV本地库
static {
System.loadLibrary(Core.NATIVE_LIBRARY_NAME );
}
public static void main(String[]args) {
Mat image = Imgcodecs.imread("mylena.png");
Mat gray = new Mat(image.height(), image.width(), CvType.CV_8U, new Scalar(0)); Imgproc.cvtColor(image, gray, Imgproc.COLOR_BGR2GRAY);
Mat hist = new Mat(256, 1, CvType.CV_8U, new Scalar(0));
ArrayListhistsSource = new ArrayList();
histsSource.add(gray);
Imgproc.calcHist(histsSource, new MatOfInt(0), new Mat(), hist, new MatOfInt(256), new MatOfFloat(0f, 256f));
System.out.println(hist);
System.out.println(hist.dump());
intpixAll = gray.rows() * gray.cols();
Mat histNorm = new Mat(hist.rows(), hist.cols(), hist.type());
Core.divide(hist, new Scalar(pixAll), histNorm);
System.out.println(histNorm);
System.out.println(histNorm.dump());
}
}
直方图从统计学的角度表征图像,它可以反映图片的整体亮度和对比度:
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)