私は関数内にMatコンテナを渡しています。しかし、私は何が出力されるのか分からない。出力をどのように表示しますか?画像として表示しているときに空白の行列が表示されているためです。提案をお願いします。前もって感謝します。 CV_32FC1
、すなわち単一チャネルフロートマトリックス:buildCostMatrix関数の出力行列のデータ型は?
これは、コスト・マトリックスのタイプは自分のコード
#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;
}
ショー。あなたの質問は、現在、人々が手助けするための細部についてはあまりにも不足しています。具体的に、試行錯誤を見せてください。 –
私は2つのhistograsmを入力としてbuildCostMatrix関数{model-> buildCostMatrix(hist、hist1、out);}に渡しています。 cout << out;}コメントにコード全体を投稿することはできません。 –
質問をいつでも編集して詳細を提供することができます(推奨)。それはまた将来あなたの質問に出くわすかもしれない他の人々を助けるでしょう。 –