opencv直方图(上)
2013-06-27 09:06
113 查看
// 3.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h" #include"opencv243.h" using namespace std; using namespace cv; int _tmain(int argc, _TCHAR* argv[]) { vector<int> hist(256); Mat img=imread("C:\\Users\\sony\\Desktop\\Lena.jpg",0); Mat histImg(256,256,img.type()); //表示256行,256列 for(auto it=img.begin<uchar>();it!=img.end<uchar>();++it) hist[*it]++; for(int i=0;i!=hist.size();++i) { Point p1(i,0); Point p2(i,hist[i]/20); line(histImg,p1,p2,0); } for(int i=0;i!=hist.size();++i) cout<<"灰度值为"<<i<<"的像素点的个数为:"<<hist[i]<<endl; flip(histImg,histImg,0); //0表示对x轴翻转 imshow("histImg",histImg); waitKey(0); return 0; }
这里的cv::Mat::begin()返回的是可读可写的迭代器,后面加了const表示可读迭代器
以下是用calcHist函数的方法画直方图,代码如下:
// 4.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include"opencv243.h"
#include"stdlib.h"
using namespace std;
using namespace cv;
Mat getImage(const Mat& hist, Size imgSize)
{
Mat histImg(imgSize, CV_8UC3);
int Padding = 10; //一个基点偏差
int W = imgSize.width - 2 * Padding;
int H = imgSize.height - 2 * Padding;
double _max;
minMaxLoc(hist, NULL, &_max);
double Per = (double)H / _max;
const Point Orig(Padding, imgSize.height-Padding);
int bin = W / (hist.rows + 2);
//画方柱
for (int i = 1; i <= hist.rows; i++)
{
Point pBottom(Orig.x + i * bin, Orig.y);
Point pTop(pBottom.x, pBottom.y - Per * hist.at<float>(i-1));
line(histImg, pBottom, pTop, Scalar(255, 0, 0), bin);
}
return histImg;
}
int _tmain(int argc, _TCHAR* argv[])
{
Mat img=imread("C:\\Users\\sony\\Desktop\\Airplane.jpg",0);
Mat hist;
int histSize=256;
float range[]={0,255};
const float* histRange={range};
bool uniform=true;
bool accumulate=false;
calcHist(&img,1,0,Mat(),hist,1,&histSize,&histRange,uniform,accumulate);
Mat histImg=getImage(hist,Size(600,400));
imshow("1",histImg);
waitKey(0);
return 0;
}
相关文章推荐
- 使用opencv作物件识别(一) —— 积分直方图加速HOG特征计算
- OPENCV——直方图计算calcHist
- 图像相似度计算之直方图方法OpenCV实现
- OpenCV 计算图像一维直方图
- OpenCV学习之旅7——直方图与匹配(1)
- python OpenCV学习笔记(二十三):二维直方图
- 用opencv画两幅图片的直方图
- opencv3 绘制二维直方图-H-S直方图
- opencv绘制灰度直方图
- OpenCV中文网站例程——图像颜色分布直方图
- python opencv 直方图反向投影的方法
- OPENCV中画图像直方图(带刻度并可以通过滚动条调节直方图中直方条的个数)
- opencv中直方图的反向投影
- opencv之直方图计算及绘制
- OpenCV 实现颜色直方图
- Opencv_Python_9_图像直方图(histogram)
- 对OpenCV直方图的数据结构CvHistogram的理解
- opencv-图像二值化、阈值获取、直方图、轮廓提取
- opencv利用cvCalcHist获得手的肤色直方图的比较汇总
- 第七章 学习OpenCV——直方图与匹配