【发布时间】:2017-03-31 09:36:04
【问题描述】:
我在 java 中使用 opencv_249 dll。使用下面的代码比较两个图像矩阵。 代码抛出了一些我无法解决的异常。
static double compareImages(Mat main, Mat temp){
main.convertTo(main, CvType.CV_32FC3);
temp.convertTo(temp, CvType.CV_32FC3);
Core.normalize(main, temp, 1.0, 0.0, Core.NORM_L1);
double s=Imgproc.compareHist(main, temp, Imgproc.CV_COMP_CORREL);
return s;
}
代码抛出以下异常:
OpenCV Error: Assertion failed (H1.type() == H2.type() && H1.type() == CV_32F) in cv::compareHist,
file ..\..\..\..\opencv\modules\imgproc\src\histogram.cpp,
line 1985
Exception in thread "main"
CvException [org.opencv.core.CvException:
cv::Exception: ..\..\..\..\opencv\modules\imgproc\src\histogram.cpp:1985:
error: (-215) H1.type() == H2.type() && H1.type() == CV_32F
in function cv::compareHist ]
at org.opencv.imgproc.Imgproc.compareHist_0(Native Method)
at org.opencv.imgproc.Imgproc.compareHist(Imgproc.java:3051)
at ImageComparator.main(ImageComparator.java:88)
谁能说出代码中遗漏了什么?
【问题讨论】:
-
我不知道 java api,但我会尝试两件事:根据断言错误,似乎转换操作不成功,并且当您调用 compareHist 时,其中一种图像类型不再是 CV_32F,所以尝试使用新参考 'Mat convertMain = main.convertTo(main, CvType.CV_32FC3);'或者也许规范化线路搞砸了事情
标签: java opencv image-processing histogram image-comparison