[英]EmguCV: How to create a covariation matrix from image?
我有一個Image<Gray, Byte>
,我想計算圖像的協方差矩陣。
因此我使用函數CvInvoke.cvCalcCovarMatrix(imageptr, 2, cov, avg, COVAR_METHOD.CV_COVAR_NORMAL);
這是我的代碼:
Image<Gray, Byte> image_gray = _image.Convert<Gray, Byte>();
Matrix<float> cov = new Matrix<float>(image_gray.Rows, image_gray.Cols);
Matrix<float> avg = new Matrix<float>(image_gray.Cols, 1);
Matrix<float>[] input = new Matrix<float>[image_gray.Rows];
float[] temp = new float[image_gray.Rows];
for (int j = 0; j <image_gray.Rows; j++)
{
for (int i = 0; i < image_gray.Cols; i++)
{
temp[i] = (float)image_gray[j, i].Intensity;
}
input[j] =new Matrix<float>(temp);
}
IntPtr[] imageptr = Array.ConvertAll<Matrix<Single>, IntPtr>(input, delegate(Matrix<Single> mat) { return mat.Ptr; });
CvInvoke.cvCalcCovarMatrix(imageptr, 2, cov, avg, COVAR_METHOD.CV_COVAR_NORMAL);
問題在於,協方差矩陣元素的結果始終為空。
錯誤是cvCalcCovarMatrix(imageptr,count, cov, avg, COVAR_METHOD.CV_COVAR_NORMAL);
的第二個參數cvCalcCovarMatrix(imageptr,count, cov, avg, COVAR_METHOD.CV_COVAR_NORMAL);
正確的是:
cvCalcCovarMatrix(imageptr, image_gray.Cols, cov, avg, COVAR_METHOD.CV_COVAR_NORMAL);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.