OpenCV直方图计算学习
环境:Visual studio 2012 + opencv 2.4.5
统计彩色图像的指定区域的rgb通道的直方图分布
下面的程序用了inRange函数,生成mask模板将r,g,b值限制在某一个区间内,然后调用calcHist函数
运行结果:
由于代码段
的作用,使得RGB各个通道的直方图起始位置各不相同//将数值低于min大于max的像素点排除在统计之外int r_min = 10 , r_max = 256 ; //红色通道的统计范围int g_min = 20 , g_max = 256 ; //绿色通道的统计范围int b_min = 30 , b_max = 256 ; //蓝色通道的统计范围Mat red_mask , green_mask , blue_mask , mask ;//调用inRange函数生成掩膜矩阵inRange ( rgb_planes [ 0 ], r_min , r_max , red_mask );//cvtColor(red_mask,mask,CV_GRAY2RGB); imshow("red mask",red_mask);waitKey(0);inRange ( rgb_planes [ 1 ], g_min , g_max , green_mask );//cvtColor(green_mask,mask,CV_GRAY2RGB); imshow("green mask",green_mask);waitKey(0);inRange ( rgb_planes [ 2 ], b_min , b_max , blue_mask );//cvtColor(blue_mask,mask,CV_GRAY2RGB); imshow("blue mask",blue_mask);waitKey(0);