【转】OpenCV图像处理 图像的点运算 ( 灰度直方图 )
2013-02-03 15:54
489 查看
[code]intmain()
{
Matimg=imread("lena.jpg",CV_LOAD_IMAGE_GRAYSCALE);
Mat*arrays=&img;
intnarrays=1;
intchannels[]={0};
InputArraymask=noArray();
Mathist;
intdims=1;
inthistSize[]={256};
floathranges[]={0.0,255.0};
constfloat*ranges[]={hranges};
//调用calcHist计算直方图,结果存放在hist中
calcHist(arrays,narrays,channels,mask,hist,dims,histSize,ranges);
//调用一个我自己写的简单的函数用于获取一张显示直方图数据的图片,
//输入参数为直方图数据hist和期望得到的图片的尺寸
MathistImg=ggicci::getHistogram1DImage(hist,Size(600,420));
imshow("lenagrayimagehistogram",histImg);
waitKey();
}
Matggicci::getHistogram1DImage(constMat&hist,SizeimgSize)
{
MathistImg(imgSize,CV_8UC3);
intPadding=10;
intW=imgSize.width-2*Padding;
intH=imgSize.height-2*Padding;
double_max;
minMaxLoc(hist,NULL,&_max);
doublePer=(double)H/_max;
constPointOrig(Padding,imgSize.height-Padding);
intbin=W/(hist.rows+2);
//画方柱
for(inti=1;i<=hist.rows;i++)
{
PointpBottom(Orig.x+i*bin,Orig.y);
PointpTop(pBottom.x,pBottom.y-Per*hist.at<float>(i-1));
line(histImg,pBottom,pTop,Scalar(255,0,0),bin);
}
//画3条红线标明区域
line(histImg,Point(Orig.x+bin,Orig.y-H),Point(Orig.x+hist.rows*bin,Orig.y-H),Scalar(0,0,255),1);
line(histImg,Point(Orig.x+bin,Orig.y),Point(Orig.x+bin,Orig.y-H),Scalar(0,0,255),1);
line(histImg,Point(Orig.x+hist.rows*bin,Orig.y),Point(Orig.x+hist.rows*bin,Orig.y-H),Scalar(0,0,255),1);
drawArrow(histImg,Orig,Orig+Point(W,0),10,30,Scalar::all(0),2);
drawArrow(histImg,Orig,Orig-Point(0,H),10,30,Scalar::all(0),2);
returnhistImg;
}
[/code]
[/code]
[/quote]
Result:
End:
Author:Ggicci
欢迎阅读,如有错误,希望指正!
--OpenCV初学者
相关文章推荐
- OpenCV图像处理 图像的点运算 ( 灰度直方图 )
- opencv 图像处理 形态学操作 腐蚀 膨胀 开闭运算 阈值二值化 图像卷积 图像金字塔 Sobel算子 Laplacian 算子 candy边缘检测 霍夫变换 直方图
- OpenCV 中图像的算术运算、平滑处理、阈值化及图像金字塔
- 学习【OpenCV入门教程之十一】 形态学图像处理(二)开运算,闭运算,梯度运算,顶帽,黑帽---思维导图笔记
- (未实用 需多个函数配套使用)opencv3.0 函数学习 10——morphologyEx 形态学图像处理:开运算、闭运算、形态学梯度、顶帽、黑帽合辑
- OpenCV 形态学图像处理 开运算、闭运算、形态学梯度、顶帽、黑帽合辑(轨迹条控制)综合示例
- 图像处理之opencv---加减乘除运算cvdiv
- 【OpenCV入门教程之十一】 形态学图像处理(二):开运算、闭运算、形态学梯度、顶帽、黑帽合辑
- 【OpenCV入门教程之十一】 形态学图像处理(二):开运算、闭运算、形态学梯度、顶帽、黑帽合辑
- Python-OpenCV 处理图像(二):滤镜和图像运算
- Python-OpenCV 处理图像(二):滤镜和图像运算
- opencv之图像形态学处理:开运算、闭运算及形态学梯度
- 【OpenCV图像处理入门学习教程一】OpenCV2 + 3的安装教程与VS2013的开发环境配置 + JPEG压缩源码分析与取反运算修改
- Python3与OpenCV3.3 图像处理(五)--图像运算
- 【OpenCV入门教程之十一】 形态学图像处理(二):开运算、闭运算、形态学梯度、顶帽、黑帽合辑
- 【OpenCV入门教程之十一】 形态学图像处理(二):开运算、闭运算、形态学梯度、顶帽、黑帽合辑
- 【OpenCV入门教程之十一】 形态学图像处理(二):开运算、闭运算、形态学梯度、顶帽、黑帽合辑
- 【OpenCV3图像处理】形态学 --- 膨胀、腐蚀、开运算 闭运算、形态学梯度、顶帽运算、黑帽运算
- OpenCV数字图像处理二:代数运算
- 【OpenCV入门教程之十一】 形态学图像处理(二):开运算、闭运算、形态学梯度、顶帽、黑帽合辑