1
我想使視頻的所有幀的聚類我已經計算出hsv直方圖但未能找到kmean聚類。我的代碼在k mean命令中崩潰。任何人都可以告訴我我做錯了什麼。視頻的所有幀的直方圖的K均值聚類
#include "stdafx.h"
#include "highgui.h"
#include <stdio.h>
#include <cv.h>
#include <highgui.h>
#include <stdio.h>
#include <conio.h>
#include <opencv2/imgproc/imgproc.hpp> // Gaussian Blur
#include <opencv2/core/core.hpp> // Basic OpenCV structures (cv::Mat, Scalar)
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
#include <conio.h>
using namespace cv;
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
cv::Mat centers;
Mat src_base, hsv_base;
cv::Mat labels;
vector<Mat> histograms;
string filename = "video.avi";
VideoCapture capture(filename);
if(!capture.isOpened())
exit(0);
for(; ;)
{
capture >> src_base;
if(src_base.empty())
break;
/// Convert to HSV
cvtColor(src_base, hsv_base, CV_BGR2HSV);
/// Using 16 bins for hue and 32 for saturation
int h_bins = 16; int s_bins = 8;
int histSize[] = { h_bins, s_bins };
// hue varies from 0 to 256, saturation from 0 to 180
float h_ranges[] = { 0, 256 };
float s_ranges[] = { 0, 180 };
const float* ranges[] = { h_ranges, s_ranges };
// Use the o-th and 1-st channels
int channels[] = { 0, 1 };
/// Histograms
Mat hist_base;
/// Calculate the histograms for the HSV images
calcHist(&hsv_base, 1, channels, Mat(), hist_base, 2, histSize, ranges, true, false);
histograms.push_back(hist_base);
}
cv::kmeans(histograms, 8, labels,cv::TermCriteria(CV_TERMCRIT_ITER, 10, 1.0),3, cv::KMEANS_PP_CENTERS, centers);
cout<<"code executed"<<endl;
return 0;
}
我正面臨類似的問題,請分享如果喲你找到了解決方案。 – Luqman