直方图操作

示例程序:

#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;
}

  

时间: 2024-10-24 20:12:12

直方图操作的相关文章

直方图、基数、选择性、群集因子

基本概念 基数(Cardinality) 列唯一键(Distinct_keys)的数量,比如性别,该列只有男女之分,所以这一列基数是2. 选择性(Selectivity) 列唯一键(Distinct_Keys)与行数(Num_Rows)的比值. 直方图 (Histogram)是一种对数据分布质量情况进行描述的工具.它会按照某一列不同值出现数量多少,以及出现的频率高低来绘制数据的分布情况,以便能够指导优化器根据数据的分布做出正确的选择. 频率直方图(FREQUENCY HISTOGRAM),当列中

深度学习原理与框架-递归神经网络-RNN网络基本框架(代码?) 1.rnn.LSTMCell(生成单层LSTM) 2.rnn.DropoutWrapper(对rnn进行dropout操作) 3.tf.contrib.rnn.MultiRNNCell(堆叠多层LSTM) 4.mlstm_cell.zero_state(state初始化) 5.mlstm_cell(进行LSTM求解)

问题:LSTM的输出值output和state是否是一样的 1. rnn.LSTMCell(num_hidden, reuse=tf.get_variable_scope().reuse)  # 构建单层的LSTM网络 参数说明:num_hidden表示隐藏层的个数,reuse表示LSTM的参数进行复用 2.rnn.DropoutWrapper(cell, output_keep_prob=keep_prob) # 表示对rnn的输出层进行dropout 参数说明:cell表示单层的lstm,o

高动态范围红外图像压缩

BF&DRC 近期看了一篇高动态范围红外图像压缩的文章,<New technique for the visualization of high dynamic range infrared images>.这篇文章主要利用双边滤波器把宽动态红外图像切割为基本图像和细节图像,再分别对基本图像和细节图像进行处理.对处理后的图像进行融合处理. 传统的宽动态图像压缩到256可视图像,一般採用线性的方法,该方法得到的图像细节不好,因此眼下有非常多复杂的方法来对宽动态范围图像进行操作处理.而处理

[ZT]图像处理库的比较:OpenCV,FreeImage,CImg,CxImage

1.对OpenCV 的印象:功能十分的强大,而且支持目前先进的图像处理技术,体系十分完善,操作手册很详细,手册首先给大家补计算机视觉的知识,几乎涵盖了近10年内的主流算法: 然后将图像格式和矩阵运算,然后将各个算法的实现函数.我用它来做了一个Harris角点检测器和Canny边缘检测器,总共就花了一个小时(第一次用OpenCV).而且该库显示图像极其方便,两句话就可以.但该库似乎不大稳定,对32F和16S.8U的图像数据支持上bug重重.我用 cvFilter2D函数进行线性滤波,屡屡出错,后来

【笔记】灰度变换

1.灰度化 这里讨论的是:RGB空间图像 定义于RGB空间的彩色图,其每个像素点的色彩由R.G.B三个分量共同决定.每个分量在内存所占的位数共同决定了图像深度,即每个像素点所占的字节数.以常见的24深度彩色RGB图来说,其三个分量各占1个字节,这样每个分量可以取值为0~255,这样一个像素点可以有1600多万(255*255*255)的颜色的变化范围.对这样一幅彩色图来说,其对应的灰度图则是只有8位的图像深度(可认为它是RGB三个分量相等),这也说明了灰度图图像处理所需的计算量确实要少.不过需要

OpenCV中感兴趣区域的选取与检测(一)

1.感兴趣区域的选取 感兴趣区域(Region of Interest, ROI)的选取,一般有两种情形:1)已知ROI在图像中的位置:2)ROI在图像中的位置未知. 1)第一种情形 很简单,根据ROI的坐标直接从原图抠出,不过前提是要知道其坐标,直接上例子吧. int getROI(Mat image, Rect rect) { Mat img=image.clone(); Mat roi; int cols=img.cols, rows=img.rows; //ROI越界,返回 if(col

基于FPGA的RGB图像转灰度图像算法实现

一.前言 最近学习牟新刚编著<基于FPGA的数字图像处理原理及应用>的第六章直方图操作,由于需要将捕获的图像转换为灰度图像,因此在之前代码的基础上加入了RGB图像转灰度图像的算法实现. 2020-02-29 10:38:40 二.RGB图像转灰度图像算法原理 将彩色图像转换为灰度图像的方法有两种,一个是令RGB三个分量的数值相等.输出后便可以得到灰度图像,另一种是转换为YCbCr格式,将Y分量提取出来,YCbCr格式中的Y分量表示的是图 像的亮度和浓度,所以只输出Y分量,得到图像就是灰度图像.

Oracle索引梳理系列(十)- 直方图使用技巧及analyze table操作对直方图统计的影响(谨慎使用)

版权声明:本文发布于http://www.cnblogs.com/yumiko/,版权由Yumiko_sunny所有,欢迎转载.转载时,请在文章明显位置注明原文链接.若在未经作者同意的情况下,将本文内容用于商业用途,将保留追究其法律责任的权利.如果有问题,请以邮箱方式联系作者([email protected]). 前言 针对索引列,尤其是存在严重数据倾斜的索引列,直方图的统计信息,对于CBO优化器更准确地选择执行计划至关重要. 对于初心者,可以从这篇文章中,了解到直方图对于索引列的价值.作用,

opencv笔记(二十一)——关于直方图的几个操作

一.直方图均衡化 考虑四种图像. 在暗色图像中,直方图的组成成分集中在灰度级低的一侧. 明亮图像的直方图倾向于灰度级高的一侧. 低对比度图像的直方图窄而集中于灰度级的中部. 高对比度图像的直方图的成分覆盖了灰度级很宽的范围. 在遇到前三种图像的时候,可能我们需要直方图均衡化,用来使一幅图像的像素占有全部可能的灰度级并且分布均匀,这样的图像有高对比度和多变的灰度色调. OpenCV中,我们使用equalizeHist来对灰度图像进行直方图均衡化:  equalizeHist(InputArray