文章目录
- 前言
- 一、基本概念
- 二、操作步骤
- 1.包含头文件
- 2.读取图像
- 3.显示图像
- 4.保存图像
- 总结
前言
OpenCV的全称是Open Source Computer Vision Library,是一个跨平台的计算机视觉库。OpenCV是由英特尔公司发起并参与开发,以BSD许可证授权发行,可以在商业和研究领域中免费使用。OpenCV可用于开发实时的图像处理、计算机视觉以及模式识别程序。该程序库也可以使用英特尔公司的IPP进行加速处理。
一、基本概念
在本教程中,您将学习如何:
从文件中读取图像(使用cv::imread)
在 OpenCV 窗口中显示图像(使用cv::imshow)
将图像写入文件(使用cv::imwrite)
二、操作步骤
1.包含头文件
#include <opencv2/core.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui.hpp>
#include <iostream>
using namespace cv;
在 OpenCV 3 中,我们有多个模块。每个人都负责不同的区域或图像处理方法。您已经可以在这些教程本身的用户指南的结构中观察到这一点。在使用其中任何一个之前,您首先需要包含头文件,其中声明了每个单独模块的内容。
您几乎总是最终会使用:
核心部分,这里定义了库的基本构建块
imgcodecs模块,提供读写功能
highgui模块,因为它包含在窗口中显示图像的功能
我们还包括iostream以方便控制台线路输出和输入。
通过using namespace cv;在下面声明 , 可以在不显式声明命名空间的情况下访问库函数。
2.读取图像
std::string image_path = samples::findFile("starry_night.jpg");
Mat img = imread(image_path, IMREAD_COLOR);
if(img.empty())//执行检查,图像加载正确。
{
std::cout << "Could not read the image: " << image_path << std::endl;
return 1;
}
我们从 OpenCV 样本中读取图像“starry_night.jpg”。为此,调用cv::imread函数使用第一个参数指定的文件路径加载图像。第二个参数是可选的,它指定了我们想要的图像格式。这可能是:
IMREAD_COLOR 加载 BGR 8 位格式的图像。这是此处使用的默认值。
IMREAD_UNCHANGED 按原样加载图像(如果存在,包括 alpha 通道)
IMREAD_GRAYSCALE 将图像加载为强度图像
读取图像数据后将存储在cv::Mat对象中。
3.显示图像
imshow("Display window", img);
int k = waitKey(0); // Wait for a keystroke in the window
调用cv::imshow函数显示图像。第一个参数是窗口的标题,第二个参数是将要显示的cv::Mat对象。
因为我们希望在用户按下某个键之前显示我们的窗口(否则程序会结束得太快),我们使用cv::waitKey函数,其唯一参数是等待用户输入的时间(以毫秒)。零意味着永远等待。返回值是按下的键。
4.保存图像
if(k == 's')
{
imwrite("starry_night.png", img);
}
最后,如果按下的键是“s”键,图像将被写入文件。为此,调用了cv::imwrite函数,该函数具有文件路径和cv::Mat对象作为参数。
总结
以上就是OpenCV的读取、显示、保存图像教程内容。