opencv学习笔记C++绘制灰度直方图

Opencv学习笔记C++绘制灰度直方图攻略

Opencv是一个常用的开源计算机视觉库,提供了一系列用于图像处理的工具和算法。在图像处理领域,灰度直方图是一种常用的工具,可以用来分析图像的颜色分布情况。本文将介绍如何使用Opencv库绘制图像的灰度直方图。

准备工作

在使用Opencv库绘制灰度直方图之前,需要先安装Opencv库和C++编译器。可以在官网下载安装包进行安装。安装完成后,在编译器中配置好Opencv库的路径,即可开始编写代码。

绘制灰度直方图的步骤

  1. 读取图像

使用Opencv提供的imread函数,可以读取图像。读取后的图像保存在Mat类型的变量中。

Mat img = imread("test.jpg", IMREAD_GRAYSCALE);
  1. 计算直方图

使用Opencv提供的calcHist函数,可以计算图像的灰度直方图。该函数接收一个Mat类型的变量和一些其他参数,返回一个向量,表示图像的灰度直方图。

int histSize = 256;
float range[] = {0, 256};
const float* ranges[] = {range};
MatND hist;
calcHist(&img, 1, 0, Mat(), hist, 1, &histSize, ranges, true, false);
  1. 绘制直方图

使用Opencv提供的绘图函数可以将计算出的直方图可视化。这里使用了Opencv提供的直方图绘制函数plotHistogram,它接收一个图像窗口名称和计算出的直方图向量作为参数,可以自动绘制并显示直方图。

Mat histImg = Mat::zeros(256, 256, CV_8UC1);
plotHistogram(hist, histImg);
imshow("Histogram", histImg);
  1. 显示图像和直方图

最后,使用Opencv提供的imshow函数可以显示图像和直方图。

imshow("Image", img);
imshow("Histogram", histImg);

示例说明

以下提供两个示例,分别展示如何绘制单张图片和多张图片的灰度直方图。

示例一:绘制单张图片的灰度直方图

#include <opencv2/opencv.hpp>

using namespace cv;

int main() {
    Mat img = imread("test.jpg", IMREAD_GRAYSCALE);

    int histSize = 256;
    float range[] = {0, 256};
    const float* ranges[] = {range};
    MatND hist;
    calcHist(&img, 1, 0, Mat(), hist, 1, &histSize, ranges, true, false);

    Mat histImg = Mat::zeros(256, 256, CV_8UC1);
    plotHistogram(hist, histImg);

    imshow("Image", img);
    imshow("Histogram", histImg);
    waitKey(0);
    return 0;
}

运行上述代码可以显示一张名为test.jpg的图片和其对应的灰度直方图。

示例二:绘制多张图片的灰度直方图

#include <opencv2/opencv.hpp>

using namespace cv;

int main() {
    Mat img1 = imread("test1.jpg", IMREAD_GRAYSCALE);
    Mat img2 = imread("test2.jpg", IMREAD_GRAYSCALE);

    int histSize = 256;
    float range[] = {0, 256};
    const float* ranges[] = {range};
    MatND hist1, hist2;
    calcHist(&img1, 1, 0, Mat(), hist1, 1, &histSize, ranges, true, false);
    calcHist(&img2, 1, 0, Mat(), hist2, 1, &histSize, ranges, true, false);

    Mat histImg1 = Mat::zeros(256, 256, CV_8UC1);
    Mat histImg2 = Mat::zeros(256, 256, CV_8UC1);
    plotHistogram(hist1, histImg1);
    plotHistogram(hist2, histImg2);

    namedWindow("Image 1", WINDOW_NORMAL);
    namedWindow("Histogram 1", WINDOW_NORMAL);
    namedWindow("Image 2", WINDOW_NORMAL);
    namedWindow("Histogram 2", WINDOW_NORMAL);

    imshow("Image 1", img1);
    imshow("Histogram 1", histImg1);
    imshow("Image 2", img2);
    imshow("Histogram 2", histImg2);

    waitKey(0);
    return 0;
}

运行上述代码可以显示两张名为test1.jpg和test2.jpg的图片及其对应的灰度直方图。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:opencv学习笔记C++绘制灰度直方图 - Python技术站

(0)
上一篇 2023年5月24日
下一篇 2023年5月24日

相关文章

  • django中ImageField的使用详解

    下面是关于“Django 中 ImageField 的使用详解”的完整攻略: 1. ImageField 简介 Django 中的 ImageField 是一个用来存储图片的字段,它使用 Pillow 库实现对于图片的操作和存储。可以用来上传图片,处理图片,同时也方便图片管理。 2. 创建 ImageField 为了在模型中使用 ImageField,我们需…

    人工智能概览 2023年5月25日
    00
  • django settings.py 配置文件及介绍

    介绍 在 Django 项目中,settings.py 文件是非常重要的配置文件,它包含了项目中的所有配置选项。其中包括数据库配置、邮件配置、静态文件路径、调试设置、国际化选项等。 settings.py 文件位于 Django 项目根目录下(与 manage.py 文件同级),使用 Python 语言编写,必须定义一个名为 settings 的变量作为模块…

    人工智能概览 2023年5月25日
    00
  • LNMP部署及HTTPS服务开启教程

    下面是 LNMP 部署及 HTTPS 服务开启教程的完整攻略。 一、环境准备 操作系统:Ubuntu 18.04 LTS 网络环境:已连接互联网 二、安装Nginx 更新 apt-get 包管理器:sudo apt-get update 安装 Nginx:sudo apt-get install nginx 验证 Nginx 是否安装成功:在浏览器访问服务器…

    人工智能概览 2023年5月25日
    00
  • 科大讯飞智能办公本Air怎么样 科大讯飞智能办公本Air评测

    科大讯飞智能办公本Air评测 科大讯飞智能办公本Air是一款注重轻薄便携和高性能的笔记本电脑。它采用了第9代英特尔酷睿i5处理器,内置16GB内存和512GB固态硬盘。同时,它还拥有一个13.3英寸全高清触控屏幕,支持无线投屏和智能语音助手等功能。下面就来详细讲解一下它的具体表现。 外观 科大讯飞智能办公本Air采用了一体成型的铝合金外壳,整体做工非常精细,…

    人工智能概览 2023年5月25日
    00
  • python简单几步实现时间日期处理到数据文件的读写

    下面将详细讲解使用 Python 实现时间日期处理到数据文件的读写的完整攻略。 步骤1:引入依赖 在 Python 中处理时间日期,我们需要用到 Python 标准库中的 datetime 模块和 time 模块,所以我们首先需要在 Python 代码中引入这两个模块。 import datetime import time 步骤2:处理时间日期 我们可以用…

    人工智能概论 2023年5月24日
    00
  • Studio 3T无限试用的问题及解决方法

    Studio 3T无限试用的问题及解决方法 问题描述 Studio 3T是一款非常流行的MongoDB数据库管理工具,很多用户都希望能够无限制地试用,但实际上,它只能试用14天,超过时间就必须购买正版授权才能继续使用,这对于一些轻量使用的用户来说可能会有些不方便。 解决方法 本攻略提供两种不同的解决方法,用户可以自行选择适合自己的方案。 方法一:使用破解版软…

    人工智能概论 2023年5月24日
    00
  • 详解springboot整合mongodb

    下面是“详解SpringBoot整合MongoDB”的完整攻略: 1. 前置条件 在使用SpringBoot整合MongoDB之前,需要先满足以下条件: 安装Java JDK,推荐使用Java 8或以上版本。 安装MongoDB数据库,推荐使用MongoDB 4.0或以上版本。 在IDE中安装SpringBoot插件,推荐使用IntelliJ IDEA或Ec…

    人工智能概论 2023年5月25日
    00
  • python库-dotenv包 及 .env配置文件详解

    好的。首先我们要了解一下“python库-dotenv包 及 .env配置文件详解”的定义和作用。 一、定义与作用 dotenv是python中的一个工具包,作用是读取项目中的.env文件,将.env文件中定义的环境变量导入到当前的环境中供当前程序使用。.env文件是一个配置文件,其中包含的key-value键值对表示程序所需要用到的环境变量。 二、安装 在…

    人工智能概览 2023年5月25日
    00
合作推广
合作推广
分享本页
返回顶部