Как определить сходство между двумя изображениями, используя Imgproc.compareHist метод opencv в Java?
Я использую OpenCV_249 DLL в Java. Используя код ниже, чтобы сравнить две матрицы изображения. Код выбрасывает некое исключение, которое я не могу разрешить.
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)
Может ли кто-нибудь сказать, что упущено в коде?
1 ответ
**** Ошибка OpenCV: утверждение не выполнено (H1.type() == H2.type() && H1.type() == CV_32F) в...
Как говорится в сообщении об ошибке, утверждение не удалось. Оба входных изображения должны быть одного типа, и этот тип должен быть CV_32F.
Может быть, вы заметили, что ваш тип ввода - CV_32FC3?