2017-05-26 4 views
0

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; 
} 
+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. –

+0

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. –

+0

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. –

Répondre

0

Le type de la matrice des coûts est: CV_32FC1, à savoir une matrice unique de flotteur de canal.

Vous pouvez voir que dans le source code_costMatrix est créé comme:

_costMatrix.create(costrows, costrows, CV_32FC1); 
+0

Merci. Mais pouvez-vous s'il vous plaît m'aider sur la façon de le mettre en sortie. Parce que quand je l'imprime, je reçois beaucoup de valeurs flottantes. –