opencv绘制灰度直方图
2016-04-10 14:08
351 查看
代码之一:
代码之二 :
from: http://blog.csdn.net/abcjennifer/article/details/7315650
#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",0); int width=src->width; int height=src->height; int step=src->widthStep; uchar* data=(uchar *)src->imageData; int hist[256]={0}; for(int i=0;i<height;i++) { for(int j=0;j<width;j++) { hist[data[i*step+j]]++; } } int max=0; for(i=0;i<256;i++) { if(hist[i]>max) { max=hist[i]; } } IplImage* dst=cvCreateImage(cvSize(400,300),8,3); cvSet(dst,cvScalarAll(255),0); double bin_width=(double)dst->width/256; double bin_unith=(double)dst->height/max; for(i=0;i<256;i++) { CvPoint p0=cvPoint(i*bin_width,dst->height); CvPoint p1=cvPoint((i+1)*bin_width,dst->height-hist[i]*bin_unith); cvRectangle(dst,p0,p1,cvScalar(0,255),-1,8,0); } cvNamedWindow("src",1); cvShowImage("src",src); cvNamedWindow("dst",1); cvShowImage("dst",dst); cvWaitKey(0); cvDestroyAllWindows(); cvReleaseImage(&src); cvReleaseImage(&dst); return 0; }
代码之二 :
#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",0); int size=256; float range[]={0,255}; float* ranges[]={range}; CvHistogram* hist=cvCreateHist(1,&size,CV_HIST_ARRAY,ranges,1); cvCalcHist(&src,hist,0,NULL); float max=0; cvGetMinMaxHistValue(hist,NULL,&max,NULL,NULL); IplImage* dst=cvCreateImage(cvSize(400,300),8,3); cvSet(dst,cvScalarAll(255),0); double bin_width=(double)dst->width/size; double bin_unith=(double)dst->height/max; for(int i=0;i<size;i++) { CvPoint p0=cvPoint(i*bin_width,dst->height); CvPoint p1=cvPoint((i+1)*bin_width,dst->height-cvGetReal1D(hist->bins,i)*bin_unith); cvRectangle(dst,p0,p1,cvScalar(0,255),-1,8,0); } cvNamedWindow("src",1); cvShowImage("src",src); cvNamedWindow("dst",1); cvShowImage("dst",dst); cvWaitKey(0); cvDestroyAllWindows(); cvReleaseImage(&src); cvReleaseImage(&dst); return 0; }
from: http://blog.csdn.net/abcjennifer/article/details/7315650
相关文章推荐
- opencv 图像阴影检测
- opencv 中 快速傅里叶变换 FFT
- centos系统yum安装mysql
- opencv求取RGB分量
- OpenCV中 CvArr、Mat、CvMat、IplImage、BYTE转换(总结而来)
- opencv中的矩阵操作
- 三维高斯模型 opencv实现
- Apache James邮件服务器介绍及配置发送外网邮件
- opencv 画延长线
- shell脚本学习1
- Opencv基本操作
- LInux中VIM的使用和定制
- Linux 工程编译调试Makefile及技巧
- Linux用户和用户组
- 【分步详解】两个有序数组中的中位数和Top K问题
- 浅析Linux中SQL及其用法
- Shell 十三问整理
- 内核分析-第7周
- LINUX内核分析第七周学习总结
- 《转》OpenStack Ceilometer 安装配置和API说明