Je passe un conteneur Mat dans la fonction. Mais je ne suis pas au courant de ce que sera la sortie. Comment dois-je afficher la sortie? Parce que quand je l'affiche comme une image, elle montre une matrice vide. S'il vous plaît fournir des suggestions. Merci d'avance.Quel est le type de données de la matrice de sortie dans la fonction buildCostMatrix?
C'est mon code
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>
#include <stdio.h>
#include"opencv2/opencv.hpp"
#include"opencv2/shape.hpp"
using namespace std;
using namespace cv;
/**
* @function main
*/
int main()
{
Mat src, dst;
Mat src1,dst1;
/// Load image
src = imread("photo.jpg");
src1= imread("photo1.jpg");
if(!src.data)
{ return -1; }
if(!src1.data)
{ return -1; }
int bins = 256;
int histSize[] = {bins};
// Set ranges for histogram bins
float lranges[] = {0, 256};
const float* ranges[] = {lranges};
// create matrix for histogram
cv::Mat hist,hist1, out;
int channels[] = {0};double k;
int const hist_height = 256;
cv::Ptr<HistogramCostExtractor> model = createChiHistogramCostExtractor(25,0.2f);
cv::Mat3b hist_image = cv::Mat3b::zeros(hist_height, bins);
cv::calcHist(&src, 1, channels, cv::Mat(), hist, 1, histSize, ranges, true, false);
cv::calcHist(&src1, 1, channels, cv::Mat(), hist1, 1, histSize, ranges, true, false);
//double cost[256][256];
// int costrows = std::max(hist.rows,hist1.rows)+nDummies;
//out.create(costrows,costrows,CV_32F);
cout << hist_height;
model->buildCostMatrix(hist,hist1,out);
normalize(out, out, 0, 1, NORM_MINMAX, -1, Mat());
cout << out;
cv::waitKey();
return 0;
}
Afficher au moins une partie de code exemple de ce que vous avez essayé ou tout au moins aussi loin que vous avez réussi à obtenir. Votre question manque actuellement de détails pour que les gens puissent vous aider. Soyez précis, montrez les tentatives et les résultats. –
Je passe 2 histogrammes en entrée de la fonction buildCostMatrix {model-> buildCostMatrix (hist, hist1, out); cout << out;} Je ne peux pas publier le code entier dans les commentaires. –
Vous pouvez toujours modifier votre question pour fournir plus de détails (recommandé). Cela aidera également les autres qui pourraient rencontrer votre question à l'avenir aussi. –