首页 > 代码库 > 直方图操作
直方图操作
示例程序:
#include <opencv.hpp> using namespace cv; using namespace std; int main() { Mat src, dst; //load img; src = http://www.mamicode.com/imread("001.jpg",1); if (!src.data) { printf("error"); return -1; } imshow("1", src); //分成三个通道 vector<Mat> rgb_planes; // 保存在stl容器里 split(src, rgb_planes); // 设置直方图尺寸 int histSize = 255; Mat histImage(400, 400, CV_8UC1, Scalar(0)); int bin_w = cvRound((double)400 / histSize); //设置范围 float range[] = { 0, 255 }; const float * histRange = { range }; bool uniform = true; bool accumulate = false; Mat r_hist, g_hist, b_hist; // 用于保存三个通道的直方图 //计算直方图 calcHist(&rgb_planes[1], 1,0,Mat(),r_hist,1, &histSize, &histRange, uniform, accumulate); normalize(r_hist, r_hist, 0, histImage.rows, NORM_MINMAX, -1, Mat()); // 直方图归一化 for (int i = 1; i < histSize; i++) { line(histImage, Point(bin_w * (i - 1), 400 - cvRound(r_hist.at<float>(i - 1))), Point(bin_w * (i), 400 - cvRound(r_hist.at<float>(i))), Scalar(255), 1, 8, 0); } imshow("dst", histImage); waitKey(0); return 0; }
直方图操作
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。