#include "cv.h"
#include "cxcore.h"
#include "highgui.h"
#include <iostream>
#include "function.h"
CvHistogram* histogram2(IplImage* src,int HSize) //返回归一化的histogram
{
IplImage* SrcH=cvCreateImage(cvGetSize(src),8,1);
//IplImage* SrcS=cvCreateImage(cvGetSize(src),8,1);
//分割HSV
cvSplit(src,SrcH,NULL,NULL,NULL);
//创建histogram
CvHistogram* hist;
int dims=1;
int size[]={HSize};
float RangeH[]={0,180};
//float RangeS[]={0,360};
float* ranges[]={RangeH};
hist=cvCreateHist(dims,size,CV_HIST_ARRAY,ranges);
//计算histogram
IplImage* p_w_picpath[]={SrcH};
cvCalcHist(p_w_picpath,hist);
return hist;
}
int BackProjection(int argc,char** argv) //projection:投射
{
IplImage* temp=cvLoadImage("e:\\picture\\333.jpg");
CvHistogram* hist=histogram2(temp,30);
IplImage* src=cvLoadImage("e:\\picture\\3.jpg");
IplImage* ImageH=cvCreateImage(cvGetSize(src),8,1);
IplImage* ImageS=cvCreateImage(cvGetSize(src),8,1);
IplImage* SrcHSV=cvCreateImage(cvGetSize(src),8,3);
cvCvtColor(src,SrcHSV,CV_BGR2HSV);
cvSplit(SrcHSV,ImageH,NULL,NULL,NULL);
//IplImage* p_w_picpath[]={ImageH};
//IplImage* BackProjectResult=cvCreateImage(cvGetSize(src),8,1);
IplImage* BackProjectResult=cvCreateImage(cvGetSize(src),8,1); //结果的类型要和输入图像具有同样类型,并且hist注意不要归一化,否则所有的值会被四舍五入为0
cvCalcBackProject(&ImageH,BackProjectResult,hist);
double max=0;
double min=0;
cvMinMaxLoc(BackProjectResult,&min,&max);
std::cout<<"max:"<<max<<"min:"<<min<<std::endl;
cvNamedWindow("src");
cvNamedWindow("temp");
cvNamedWindow("BackProjectResult");
cvShowImage("src",src);
cvShowImage("temp",temp);
cvShowImage("BackProjectResult",BackProjectResult);
cvWaitKey(0);
return 0;
}反射投影 cvCalcBackProject
原创
©著作权归作者所有:来自51CTO博客作者clc1989的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Java反序列化-反射
java反序列化之-反射
java 反序列化 web安全 -
线性投影 和 回归投影
一、一元线性回归以预测房价为例,图中红色x表示样本集,这里假设房价仅与size有关,所以最终回归出来的应该是一条值钱。 &n
线性投影 和 回归投影 数据结构与算法 人工智能 代价函数 迭代
















