学习opencv第七章7.2

该博客介绍了如何使用OpenCV库在C++中计算图像的HSV直方图,并进行直方图的归一化、显示以及比较。通过创建函数`createMyHist`将BGR图像转换为HSV,分通道计算直方图,然后在直方图上绘制矩形以可视化结果。最后,利用`cvCompareHist`比较不同图像的直方图,输出四种比较方法的相似度指标。
摘要由CSDN通过智能技术生成
#include "cv.h"
#include "highgui.h"

#include <IOSTREAM.H>

#pragma comment(lib,"cv.lib")
#pragma comment(lib,"highgui.lib")
#pragma comment(lib,"cxcore.lib")

CvHistogram* createMyHist(IplImage* image, const char* windowName )
{
	if (image->nChannels != 3)
	{
		return NULL;
	}
	IplImage* hsv = cvCreateImage(cvGetSize(image),image->depth,3);
	cvCvtColor(image,hsv,(image->channelSeq == "RGB")?CV_RGB2HSV:CV_BGR2HSV);//转换成HSV图像

	IplImage* h_plane = cvCreateImage(cvGetSize(image),8,1);
	IplImage* s_plane = cvCreateImage(cvGetSize(image),8,1);
	IplImage* v_plane = cvCreateImage(cvGetSize(image),8,1);

	cvCvtPixToPlane(hsv,h_plane,s_plane,v_plane,0);//分成H,S,V三个通道

	IplImage* planes[] = {h_plane,s_plane};

	//还是准备Hist所需的各种参数
	int h_bins = 30; //h分量分成30分
	int s_bins = 32; //s分量分成32份

	float h_ranges[] = {0,180};//h分量的范围
	float s_ranges[] = {0,255};//S
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值