opencv直方图统计1

参考自opencv手册


图像直方图:用于统计图像的信息。

作用:利用反投影映射检测图像信息。meanshift和camshift利用了直方图的信息进行物体跟踪。利用图像均衡化可调整图像的对比度,使图像更清晰。等等


函数介绍:

统计直方图函数:

cv::(&image,
1, // histogram of 1 image only
channels, // the channel used
cv::Mat(), // no mask is used
hist, // the resulting histogram
3, // it is a 3D histogram
histSize, // number of bins
ranges // pixel value range
uniform,
accumulate);


opencv直方图统计1_第1张图片


求取最小值和最大值:

参数:直方图,最小值,最大值,最小值位置,最大值位置,掩码

minMaxIdx(hist, &minVal, &maxVal, imin, imax, noArray());


画线:

参数:输出图像,起点,终点,颜色

line(histImage, Point(h, histSize[0]), Point(h, histSize[0] - intensity), Scalar::all(255));


查找表:

参数:图像,查找表,结果

可用以图像像素作为下标,从查找表查找对应的值替换图像的像素,结果存到result数组中

LUT(image.getMat(), lookup.getMat(), result);


颜色空间转换:

BGR转换成hsv

cvtColor(image, hue, COLOR_BGR2HSV);

BGR转换成Lab

cvtColor(image, lab, COLOR_BGR2Lab);


反投影映射:

calcBackProject(&image, //输入图像
1, //通道数
channels, //哪些通道
shistogram, //直方图,归一化了的
result, //结果图像
ranges, //像素的取值范围
255.0); //缩放因子,放大255倍

opencv直方图统计1_第2张图片

opencv直方图统计1_第3张图片


阈值化:

可实现二值化:

参数一输入图像,输出图像,阈值,最大值,阈值化方式

threshold(result, result, 255.0*thresholdVal, 255.0, THRESH_BINARY);

opencv直方图统计1_第4张图片


归一化函数:

参数:输入矩阵,输出矩阵,归一化的alpha值,归一化方式

这个函数意思:矩阵归一化为0.0-1.0

normalize(shistogram, shistogram, 1.0, NORM_L2);


直方图距离:

参数:直方图1,直方图2,求距离方式

compareHist(this->refHist, this->inputHist, HISTCMP_INTERSECT);



opencv直方图统计1_第5张图片


直方图均衡化:

输入图像,输出图像

equalizeHist(image, result);

实验:

opencv直方图统计1_第6张图片



opencv直方图统计1_第7张图片

opencv直方图统计1_第8张图片


你可能感兴趣的:(opencv直方图统计1)