1.直方图
先来对灰度图计算
// computes the joint dense histogram for a set of images.
// 计算一组图像的联合密集直方图。
// 参数:
// images://输入图像
//
// channels://通道,输入图像是哪个通道
//
// mask://掩码一般直接用 Mat mask = new Mat ();也就是不做掩码
//
// hist://输出也是一个mat
//
// dims://维数
//
// histSize://箱子数量,多少不同像素值就有多少个箱子,例如灰度图像就是256个
// 0号箱子装的就是值位0的像素数量
// ranges://像素值范围
//
// uniform:
//
// accumulate:
public static void CalcHist(Mat[] images, int[] channels, InputArray mask, OutputArray hist, int dims, int[] histSize, float[][] ranges, bool uniform = true, bool accumulate = false);
public static void CalcHist(Mat[] images, int[] channels, InputArray mask, OutputArray hist, int dims, int[] histSize, Rangef[] ranges, bool uniform = true, bool accumulate = false);
//直方图也是c++有写差别的地方,从形参上来看就比c++的少了个图片数量
Mat panda = new Mat(@"滚滚.png", ImreadModes.GrayScale);//读取为灰度图
Mat[] mats = new Mat[] { panda};//一张图片,初始化为panda
Mat hist = new Mat();//用来接收直方图
int[] channels = new int[] { 0};//一个通道,初始化为通道0
int[] histsize = new int[] { 256};//一个通道,初始化为256箱子
Rangef[] range = new Rangef[1];//一个通道,值范围
range[0].Start = 0.0F;//从0开始(含)
range[0].End = 256.0F;//到256结束(不含)
Mat mask = new Mat();//不做掩码
Cv2.CalcHist(mats, channels, mask, hist, 1, histsize, range);//计算灰度图,dim为1 1维
Console.WriteLine(hist.Rows + "行" + hist.Cols + "列");//把输出的行列打印出来
Cv2.ImShow("处理后", panda);
Cv2.WaitKey();
输出结果