Как определить сходство между двумя изображениями, используя 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?

Другие вопросы по тегам