opencv计算直方图

opencv计算直方图

opencv中计算直方图有现成的函数calcHist。calcHist具体用法见opencv 文档。

calcHist可以为多通道图像生成每一通道的直方图,也可以利用多通道图像中若干通道生成多维的直方图。

calcHist计算hsv空间的s通道的直方图:

         <span style="font-size:14px;">Mat src,imghsv1,imghsv2;
	Mat dst = imread("kobe.jpg");
	resize(dst,src,Size(48,128));
	cvtColor(src,imghsv1, CV_BGR2HSV);
	int h_bins = 30,s_bins = 32,v_bins = 32;
	const int histsize[] = {s_bins };
	float s_range[] = {0,256};
	float value;
	const float*histRange[] = {s_range};

	bool uniform = true;
	bool accumulate = false;
         Mat hist1;
	int channels[] = {1};
	calcHist( &imghsv1, 1, channels, Mat(), hist1, 1, histsize, histRange, uniform, accumulate );//</span>
imghsv1表示hsv空间的图像,  int channels[] = {1}中的1表示hsv中的第二通道。第二个参数表示输入图像的个数,Mat()表示掩码,hist1生成后的直方图。用这个函数生成的直方图和我直接写的函数是一样的。

calcHist计算二维的直方图:

        Mat imghsv;
	cvtColor(image,imghsv, CV_BGR2HSV);
	int h_bins = 20,s_bins = 32;
	const int histsize[] = {h_bins,s_bins};
	float h_range[] = {0,180};
	float s_range[] = {0,256};

	const float*histRange[] = {h_range,s_range};
	bool uniform = true;
	bool accumulate = false;

	Mat hist;
	int channels[] = {0,1};
	float sum = 0;
	calcHist( &imghsv, 1, channels, Mat(), hist, 2, histsize, histRange, uniform, accumulate);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值