opencv绘制灰度直方图
代码之一:
#include <cv.h>
#include <highgui.h>
#pragma comment( lib, "cv.lib" )
#pragma comment( lib, "cxcore.lib" )
#pragma comment( lib, "highgui.lib" )
int main()
{
IplImage* src=cvLoadImage("lena.jpg",);
int width=src->width;
int height=src->height;
int step=src->widthStep;
uchar* data=(uchar *)src->imageData;
int hist[]={};
for(int i=;i<height;i++)
{
for(int j=;j<width;j++)
{
hist[data[i*step+j]]++;
}
}
int max=;
for(i=;i<;i++)
{
if(hist[i]>max)
{
max=hist[i];
}
}
IplImage* dst=cvCreateImage(cvSize(,),,);
cvSet(dst,cvScalarAll(),);
double bin_width=(double)dst->width/;
double bin_unith=(double)dst->height/max;
for(i=;i<;i++)
{
CvPoint p0=cvPoint(i*bin_width,dst->height);
CvPoint p1=cvPoint((i+)*bin_width,dst->height-hist[i]*bin_unith);
cvRectangle(dst,p0,p1,cvScalar(,),-,,);
}
cvNamedWindow("src",);
cvShowImage("src",src);
cvNamedWindow("dst",);
cvShowImage("dst",dst);
cvWaitKey();
cvDestroyAllWindows();
cvReleaseImage(&src);
cvReleaseImage(&dst);
return ;
}
代码之二 :
#include <cv.h>
#include <highgui.h>
#pragma comment( lib, "cv.lib" )
#pragma comment( lib, "cxcore.lib" )
#pragma comment( lib, "highgui.lib" )
int main()
{
IplImage* src=cvLoadImage("lena.jpg",);
int size=;
float range[]={,};
float* ranges[]={range};
CvHistogram* hist=cvCreateHist(,&size,CV_HIST_ARRAY,ranges,);
cvCalcHist(&src,hist,,NULL);
float max=;
cvGetMinMaxHistValue(hist,NULL,&max,NULL,NULL);
IplImage* dst=cvCreateImage(cvSize(,),,);
cvSet(dst,cvScalarAll(),);
double bin_width=(double)dst->width/size;
double bin_unith=(double)dst->height/max;
for(int i=;i<size;i++)
{
CvPoint p0=cvPoint(i*bin_width,dst->height);
CvPoint p1=cvPoint((i+)*bin_width,dst->height-cvGetReal1D(hist->bins,i)*bin_unith);
cvRectangle(dst,p0,p1,cvScalar(,),-,,);
}
cvNamedWindow("src",);
cvShowImage("src",src);
cvNamedWindow("dst",);
cvShowImage("dst",dst);
cvWaitKey();
cvDestroyAllWindows();
cvReleaseImage(&src);
cvReleaseImage(&dst);
return ;
}
from: http://blog.csdn.net/abcjennifer/article/details/7315650
opencv绘制灰度直方图的更多相关文章
- OpenCV实现灰度直方图和直方图拉伸
原文链接:http://blog.csdn.net/xiaowei_cqu/article/details/7600666 如有疑问或者版权问题,请移步原作者或者告知本人. 灰度直方图是数字图像中最简 ...
- 学习OpenCV——绘制彩色直方图(HSV2BGR)
#include <cv.h> #include <highgui.h> #include <iostream> using namespace std; int ...
- OpenCV 绘制图像直方图
OpenCV绘制图像直方图,版本2.4.11 直方图可展示图像中的像素分布,是用以表示数字图像中亮度分布的直方图,标绘了图像中每个亮度值的像素数.可以借助观察该直方图了解需要如何调整亮度分布.这种直方 ...
- 【图像处理】利用C++编写函数,绘制灰度图像直方图
1. 简介 利用OpenCV读取图像,转换为灰度图像,绘制该灰度图像直方图.点击直方图,控制台输出该灰度级像素个数. 2. 原理 (1) 实现原理较为简单,主要利用了OpenCV读取图像,并转换为灰度 ...
- Opencv——灰度直方图
灰度直方图是灰度级的函数,它表示图像中具有某种灰度级的像素的个数,反映了图像中某种灰度出现的频率. 如果将图像总像素亮度(灰度级别)看成是一个随机变量,则其分布情况就反映了图像的统计特性,这可用pro ...
- C#绘制数字图像灰度直方图
灰度直方图是灰度的函数,描述的是图像中具有该灰度级的像素的个数.如果用直角坐标系来表示,则它的横坐标是灰度级,纵坐标是该灰度出现的概率(像素的个数). 灰度直方图的分布函数: 其中,K是指第k个灰度级 ...
- 灰度直方图及处理“cvQueryHistValue_1D”: 找不到标识符”的问题(上)
// HIstogram.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include "opencv2/opencv.hpp ...
- 【图像处理】基于OpenCV实现图像直方图的原理
背景 图像的直方图是衡量图像像素分布的一种方式,可以通过分析像素分布,使用直方图均衡化对图像进行优化,让图像变的清晰. opencv官方对图像直方图的定义如下: 直方图是图像中像素强度分布的图形表达方 ...
- OpenCV学习(24) 直方图(1)
直方图是对数据的统计,并将统计结果分布于一系列预定义的槽中.这里的数据不仅仅指的是灰度值,它可以是任何能有效描述图像特征的数据,比如图像梯度等等. 假设有一个矩阵包含一张图像的信息 (灰度值 0-25 ...
随机推荐
- Bash 快捷键
生活在 Bash shell 中,熟记以下快捷键,将极大的提高你的命令行操作效率. 编辑命令 Ctrl + a :移到命令行首 Ctrl + e :移到命令行尾 Ctrl + f :按字符前移(右向 ...
- Go学习指南
学习Golang书籍&资料: 1. The Go Programming Language Specification: http://golang.org/ref/spec 2. How ...
- spring-mysqlclient开源了
https://github.com/risedragon/spring-mysqlclient/wiki/spring-mysqlclient-user-guide 开源了一个项目,总结了几年的数据 ...
- ASP.NET MVC 技术债务
ASP.NET MVC 缓存.本地化和监控诊断 ASP.NET MVC 认证与授权 Entity Framework 创建数据模型
- How to: Add Missing ContentPlaceHolder
In Microsoft SharePoint Server 2010, the BlueBand master page is not supported in the Search Center ...
- Python环境搭建和开发工具的配置
本文转自http://237451446.blog.51cto.com/2307663/766781 因为要学习python了,第一步当然是环境搭建和开发工具的配置了,下边开始了. 我的开发环境是在w ...
- Leetcode#81 Search in Rotated Sorted Array II
原题地址 如果不存在重复元素,仅通过判断数组的首尾元素即可判断数组是否连续,但是有重复元素的话就不行了,最坏情况下所有元素都一样,此时只能通过线性扫描确定是否连续. 设对于规模为n的问题的工作量为T( ...
- JavaScript高级---适配器模式
一.设计模式 javascript里面给我们提供了很多种设计模式: 工厂.桥.组合.门面.适配器.装饰者.享元.代理.观察者.命令.责任链 在前面我们实现了工厂模式和桥模式 工厂模式 : 核心:为了生 ...
- jQuery中的&& ||
jQuery1.2.6 clean方法中有这么一段第一眼看去会让人晕掉的方法.完全不知其所言. “||, && 可以这样用?”,“这段东西最终返回的是个什么对象啊?” // Trim ...
- Synchronized Methods
Synchronized Methods The Java programming language provides two basic synchronization idioms: synchr ...