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

yizhihongxing

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日

相关文章

  • Python使用Pillow进行图像处理

    下面是使用Pillow进行图像处理的攻略: 什么是Pillow Pillow是Python图像处理的库,它支持的图片格式十分丰富,如JPEG、PNG、BMP、GIF、ICO、TIFF等。 安装Pillow 要安装Pillow,可以使用以下命令: pip install Pillow 使用Pillow进行图像处理 打开图片 使用Pillow打开图片非常简单,只…

    人工智能概览 2023年5月25日
    00
  • pytorch实现mnist分类的示例讲解

    下面我来为你详细讲解“pytorch实现mnist分类的示例讲解”的完整攻略。 1. 确定需求 在开始编写代码之前,我们需要明确实现的需求是什么。在这个示例中,我们需要使用pytorch搭建神经网络对手写数字图片进行分类。 2. 准备数据集 接下来,我们需要准备mnist数据集,该数据集包含了训练集和测试集。首先,我们需要安装pytorch和torchvis…

    人工智能概论 2023年5月25日
    00
  • MongoDB安装到windows服务的方法及遇到问题的完美解决方案

    下面是详细的MongoDB安装到Windows服务的方法以及遇到问题的完美解决方案: 1. 环境准备 首先需要在Windows系统中安装MongoDB,具体安装步骤可参考MongoDB官方网站的安装指南。安装完成后需要配置环境变量,将MongoDB的bin目录路径添加至系统Path中。 2. 安装MongoDB服务 在命令提示符中以管理员权限运行,进入Mon…

    人工智能概览 2023年5月25日
    00
  • python虚拟环境模块venv使用及示例

    Python虚拟环境是一个独立的Python运行环境,可以在同一台电脑上创建多个虚拟环境,每个虚拟环境都可以安装独立的Python包,不会相互影响。Python 3.3及以上版本内置了venv模块,可以方便地创建Python虚拟环境。 创建虚拟环境 要创建一个新的虚拟环境,可以在命令行中执行以下操作(其中myenv为要创建的虚拟环境名称): python3 …

    人工智能概览 2023年5月25日
    00
  • C++读写(CSV,Yaml,二进制)文件的方法详解

    C++读写(CSV, Yaml, 二进制)文件的方法详解 本文将介绍如何使用C++进行CSV、Yaml和二进制文件的读写操作。在开始之前,应该了解C++的基本语法、文件操作和相应的库的使用,例如fstream、yaml-cpp、boost等。 读写CSV文件 CSV是一种常用的格式,用于存储表格数据。在C++中读取和写入CSV文件,可以使用逗号作为分隔符,并…

    人工智能概览 2023年5月25日
    00
  • C++ OpenCV绘制简易直方图DrawHistImg

    下面是对于C++ OpenCV绘制简易直方图的完整攻略。 什么是直方图? 直方图是一种图表,用于表示数据集中各元素频度分布情况的统计表。在计算机视觉中,直方图一般用来表示一幅图像中各个像素值所占的比例。 OpenCV绘制简易直方图的函数 在OpenCV中,我们可以使用 cv::calcHist 函数来计算图像的直方图,然后使用 cv::normalize 函…

    人工智能概论 2023年5月25日
    00
  • pytorch: Parameter 的数据结构实例

    下面是关于“pytorch: Parameter 的数据结构实例”的完整攻略: 什么是Parameter 在PyTorch中,Parameter是一个重要的类,它是Tensor的一个子类,其主要作用是作为神经网络模型中的可学习参数,例如权重和偏置。Parameter类的一个重要特点是,当把它添加到Module实例中时,它会自动被放入该Module的可学习参数…

    人工智能概论 2023年5月25日
    00
  • Mac版Python3安装/升级的方式

    下面是Mac版Python3安装/升级的完整攻略: 1. 安装Homebrew Homebrew是Mac OS X上的一款软件包管理工具,它可以安装、更新和卸载各种软件包,包括Python3。我们可以在终端运行以下命令安装Homebrew: /usr/bin/ruby -e "$(curl -fsSL https://raw.githubuserc…

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