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 ...
随机推荐
- EHCache 实现通用类 CacheManager
package com.zhubaje.api.workflow.ehcache; import java.io.Serializable; import java.util.ArrayList; i ...
- 【转载】mysql 四种隔离级别分析
sql标准中,有四种隔离级别,各个离级别都有各自的规则,隔离级别越低,允许并发越大,消耗的资源越少,但是越不安全,下面就mysql数据库来分别介绍一下(每个存储引擎实施的隔离级别会有稍微的不同)mys ...
- SQL_SERVER_2008升级SQL_SERVER_2008_R2办法 (一、升级;二、重新xie载安装)
SQL_SERVER_2008升级SQL_SERVER_2008_R2两种办法 今天将由于需要就将我的SQL 2008升级到SQL 2008 R2. 说到为什么要升级是因为,因附加数据库时发现报错 ...
- 使用OPTIMIZE TABLE命令来整理表碎片实践
操作环境:ubuntu 14.10 mysql 5.6.25 对含有BLOB或TEXT字段的表,若经常做修改或删除类的操作,需要定期执行OPTIMIZE TABLE命令来整理碎片. 1.creat ...
- Extmail maildrop错误
错误: <liuyb@5teacher.com>: Command died with status 127: "maildrop". Command output: ...
- 查看Linux磁盘空间大小
一.df 命令: df 是来自于coreutils 软件包,系统安装时,就自带的:我们通过这个命令可以查看磁盘的使用情况以及文件系统被挂载的位置: 举例: [root@localhost beinan ...
- hadoop 技巧
通过--config指定不同的集群 bin/hadoop --config ./conf_time/ dfs -ls /user/rd/*/for_*/ip_table/output/ rd下是都读写 ...
- 0327定时执行--存储过程--dbms_job--dbms_scheduler.create_job
--oracle job 定时执行 存储过程 --建一张测试表 create table Person( name ), sex ) ); / --创建测试的存储过程 create or replac ...
- 当IIS挂的网站出现选 图片文件, 静态文件都打不开时, 可以试试新建一个应用程序池试试看...
当IIS挂的网站出现选 图片文件, 静态文件都打不开时, 可以试试新建一个应用程序池试试看...
- hibernate Session
转: http://kayo.iteye.com/blog/204143 Session 接口 Session 接口对于Hibernate 开发人员来说是一个最重要的接口.然而在Hibernate 中 ...