直方图操作

Posted WHLOOK

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了直方图操作相关的知识,希望对你有一定的参考价值。

示例程序:

#include <opencv.hpp>
using namespace cv;
using namespace std;
int main()
{
	Mat src, dst;
	//load img;
	src = imread("001.jpg",1);
	if (!src.data)
	{
		printf("error");
		return -1;
		
	}
	imshow("1", src);
	//分成三个通道
	vector<Mat> rgb_planes; // 保存在stl容器里
	split(src, rgb_planes);
	// 设置直方图尺寸 
	int histSize = 255;
	
	Mat histImage(400, 400, CV_8UC1, Scalar(0));
	int bin_w = cvRound((double)400 / histSize);
	//设置范围
	float range[] = { 0, 255 };
	const float * histRange = { range };
	bool uniform = true; bool accumulate = false;
	Mat r_hist, g_hist, b_hist; // 用于保存三个通道的直方图
	//计算直方图
	calcHist(&rgb_planes[1], 1,0,Mat(),r_hist,1, &histSize, &histRange, uniform, accumulate);
	normalize(r_hist, r_hist, 0, histImage.rows, NORM_MINMAX, -1, Mat());  // 直方图归一化
	for (int i = 1; i < histSize; i++)
	{
		line(histImage, Point(bin_w * (i - 1), 400 - cvRound(r_hist.at<float>(i - 1))), Point(bin_w * (i), 400 - cvRound(r_hist.at<float>(i))), Scalar(255), 1, 8, 0);
	}
	imshow("dst", histImage);
	waitKey(0);
	
	return 0;
}

  

以上是关于直方图操作的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV 学习笔记(颜色直方图计算 calcHist)

VSCode自定义代码片段——git命令操作一个完整流程

VSCode自定义代码片段15——git命令操作一个完整流程

VSCode自定义代码片段15——git命令操作一个完整流程

VSCode 如何操作用户自定义代码片段(快捷键)

为xp轴指定matplotlib.pyplot直方图的值