opencv学习日记——绘制娜扎小姐姐图像直方图

opencv学习日记——绘制图像直方图

一、图像处理结果

在这里插入图片描述

二、代码部分

#include<iostream>
#include<opencv2/opencv.hpp>

using namespace std;
using namespace cv;

int main()
{
    Mat img = imread("nazha.jpg");
    Mat img1;
    resize(img, img1, Size(650, 471));
    if (img1.empty())
    {
        cout << "请输入正确图片";
        return -1;
    }   
    Mat gray;
    //生成灰度图
    cvtColor(img1, gray, COLOR_BGR2GRAY);
    Mat hist;
    const int channels[1] = {0};
    float inRanges[2] = {0, 255};
    const float * ranges[1] = {inRanges};
    const int bins[1] = {256};
    //calcHist(图像, 图像数量, 通道索引, 掩码, 输出灰度值数组,直方图维度, 灰度值范围 )
    //Mat()表示整幅图
    calcHist(&gray, 1, channels, Mat(), hist, 1, bins, ranges);
    cout << hist << endl;

    int hist_w = 512;
    int hist_h = 400;
    int width = 2;
    Mat histImage = Mat::zeros(hist_h, hist_w, CV_8UC3);
    for (int i = 1; i <= hist.rows; i++)
    {
        //输出直方图图像, 矩形宽是一个像素,高是灰度值,输出为白色
        rectangle(histImage, Point(width * (i - 1), hist_h - 1), Point(width * i -1, hist_h - cvRound(hist.at<float>(i - 1) / 15)), Scalar(255, 255, 255), -1);

    }
    namedWindow("histImage", WINDOW_AUTOSIZE);
    imshow("histImage", histImage);
    imshow("gray", gray);
    waitKey(0);
    return 0;
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值