陆地移动距离
来源:互联网 发布:linux jdk安装路径 编辑:程序博客网 时间:2024/04/28 02:57
// HistogramCompare.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <cv.h>
#include <cvcam.h>
#include <cxcore.h>
#include <highgui.h>
#pragma comment(lib,"cv.lib")
#pragma comment(lib,"cvcam.lib")
#pragma comment(lib,"cxcore.lib")
#pragma comment(lib,"highgui.lib")
//获得指定图像的直方图
CvHistogram *GetImageHistogram(IplImage *pSourceImage)
{
assert(pSourceImage != NULL);
IplImage *pHSV = cvCreateImage(cvGetSize(pSourceImage),IPL_DEPTH_8U,pSourceImage->nChannels);
assert(pHSV != NULL);
IplImage *pH_Plane = cvCreateImage(cvGetSize(pSourceImage),IPL_DEPTH_8U,1);
IplImage *pS_Plane = cvCreateImage(cvGetSize(pSourceImage),IPL_DEPTH_8U,1);
IplImage *pV_Plane = cvCreateImage(cvGetSize(pSourceImage),IPL_DEPTH_8U,1);
IplImage *p_PlaneArray[] = {pH_Plane,pS_Plane};
cvCvtPixToPlane(pSourceImage,pH_Plane,pS_Plane,pV_Plane,NULL);
int nHBins = 30;
int nSBins = 32;
CvHistogram *pResultHistogram = NULL;
{
int szHistSize[] = { nHBins, nSBins };
float dHRanges[] = { 0, 180 };
float dSRanges[] = { 0, 255 };
float *pRanges[] = { dHRanges, dSRanges};
pResultHistogram = cvCreateHist(
2,
szHistSize,
CV_HIST_ARRAY,
pRanges
);
//计算直方图
cvCalcHist(p_PlaneArray,pResultHistogram,0,NULL);
if (pResultHistogram != NULL)
{
return pResultHistogram;
}
else
{
return NULL;
}
}
}
//根据所传来的直方图,计算出所需要的EMD矩阵
CvMat *GetEMDMat(CvHistogram *pHist,int nHBins,int nSBins)
{
assert(pHist != NULL);
int nNumRows = nHBins * nSBins;
CvMat *pResultMat = cvCreateMat(nNumRows,3,CV_32FC1);
for (int h = 0; h < nHBins; h++)
for (int s = 0; s < nSBins; s++)
{
float dBinValue = cvQueryHistValue_2D(pHist,h,s);
cvSet2D(pResultMat, h * nSBins + s, 0, cvScalar(dBinValue));
cvSet2D(pResultMat, h * nSBins + s, 1, cvScalar(h));
cvSet2D(pResultMat, h * nSBins + s, 2, cvScalar(s));
}
if (pResultMat != NULL)
{
return pResultMat;
}
else
{
return NULL;
}
}
//陆地移动距离 主函数
int main(int argc, char* argv[])
{
IplImage *pSourceImage1 = cvLoadImage(argv[1]);
assert(pSourceImage1 != NULL);
CvHistogram *pResultHistogram1 = GetImageHistogram(pSourceImage1);
assert(pResultHistogram1 != NULL);
IplImage *pSourceImage2 = cvLoadImage(argv[2]);
assert(pSourceImage2 != NULL);
CvHistogram *pResultHistogram2 = GetImageHistogram(pSourceImage2);
assert(pResultHistogram2 != NULL);
CvMat *pSourceImage1Sign = GetEMDMat(pResultHistogram1,30,32);
CvMat *pSourceImage2Sign = GetEMDMat(pResultHistogram1,30,32);
float dResult = cvCalcEMD2(pSourceImage1Sign,pSourceImage2Sign,CV_DIST_L2);
printf("%f/n",dResult);
return 0;
}
- 陆地移动距离
- OpenCV入门(二十二)-- 陆地移动距离
- 基于陆地移动距离(EMD)的彩色图像直方图距离计算
- 陆地移动通信演进路线
- 陆地
- 移动距离
- 移动距离
- 移动距离
- 移动距离
- 移动距离
- 移动距离
- 移动距离
- 移动距离
- 移动距离
- 移动距离
- 移动距离
- 移动距离
- 算法-移动距离
- Maven2部署构件到Nexus时出现的Failed to transfer file错误
- 我的ubuntu下的.vimrc文件
- 我的ubuntu下的.bashrc文件
- 《数据挖掘概念与技术》学习笔记第1章(1/10)引言
- 数据之美(十):关于墨西哥湾石油污染的 Infographics
- 陆地移动距离
- U盘个性化之个性图标(附autorun使用说明) 设置文件属性为系统文件 隐藏文件
- poj 3006 Dirichlet's Theorem on Arithmetic Progressions
- 设置系统隐藏文件 + 恢复显示隐藏文件的CMD命令!
- javascript用Enter键代替Tap键
- 大型主机CICS中间件基础
- 过滤TextBox输入框
- [转]电梯突然断电下坠时,一定要这么做--能捡回一条命
- [mysql] mysql 数据库常用操作