java - 如何在openCV中导入垫值

标签 java opencv import mat

我将许多 CalcHist 垫值导出到一个文件中,并计算这些值的平均值。现在我想将它导入回我的 Java Programm(在代码中是静态的或作为文件导入,这无关紧要)以将计算的平均历史与给定图像的历史进行比较。问题是我不知道如何将值导入 Mat 变量。

历史值示例:

[680.365; 898.065; 583.155; 971.535; 454.825; 202.34; 213.26; 316.98; 449.765; 9902.57; 357078.595; 1292.21; 521.705; 157.985; 109.985; 137.685; 301.395; 127.58; 0; 0; 0; 0; 0; 0]

如果我用 MatOfDouble 将它实现为静态值(我不知道用其他方式来实现),如下所示:

MatOfDouble averageHist= new MatOfDouble(680.365, 898.065, 583.155, 971.535, 454.825, 202.34, 213.26, 316.98, 449.765, 9902.57, 357078.595, 1292.21, 521.705, 157.985, 109.985, 137.685, 301.395, 127.58, 0, 0, 0, 0, 0, 0);

我可以像这样将变量用于 compareHist:

 double res= Imgproc.compareHist(baseHist, averageHist, Imgproc.CV_COMP_CORREL);

并编译它,但在运行时它会抛出异常。

如果我只使用我直接从 calchists 获得的 Mat 值,比如变量 baseHist,程序就可以工作,但是对于 averageHist,我想将它静态地放在代码中或从文件中读取它。

我试着像这样将 MatOfDouble 转换成普通的 Mat:

Mat averSunnyHistCast = new Mat();
averSunnyHistCast = (Mat) averageHist;

但这并没有帮助。

这是错误:

CvException [org.opencv.core.CvException: cv::Exception: C:\builds\master_PackSlaveAddon-win64-vc12-static\opencv\modules\imgproc\src\histogram.cpp:2281: error: (-215) H1.type() == H2.type() && H1.depth() == CV_32F in function cv::compareHist

感谢您的帮助!

最佳答案

这篇文章有帮助:OpenCV How to initialize Mat with 2D array in JAVA

我将我的值静态写在一个数组中,然后我使用 put 方法将每个值添加到 Mat 变量中。

double[] dblArr =  {650, 1230, 257, 66, 38, 19, 20, 33, 75, 15617, 350640, 2737, 1251, 547, 325, 328, 417, 150, 0, 0, 0, 0, 0, 0, 0};
Mat averageHist = new Mat(25, 1, CvType.CV_32F);
for (int i=0; i<25; i++){
    averSunny200.put(i, 0, dblArr[i]);
}

关于java - 如何在openCV中导入垫值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32168027/

相关文章:

javascript - 如何在另一个JavaScript文件中包含一个JavaScript文件?

java - 使用 Java 驱动程序处理 MongoDB 模式更改的正确方法

java - 如何连接多个不同格式的字符串然后拆分它们

opencv - 哈尔检测对象的可靠性

android - 为 OpenCv 添加模块依赖性的问题

mySQL 表数据导入随机切断文本字段

python - 将 JSON 数据导入为 CSV 格式

java - 线程中的异常 "main"java.lang.ArrayIndexOutOfBoundsException : 5

Java/Play - 链接到 CSS/JS 的正确方法?

opencv - 在WinCE07平台上移植OpenCV