读取图像
学习如何使用 OpenCV 读取图像。
头文件和命名空间
C++中的头文件用于声明在其他源文件中定义的函数、类和变量。头文件提供了一种将程序的接口与实现分离的方式,使大型代码库更易于组织和维护。本课程仅使用一个头文件 opencv.hpp。该头文件包含了OpenCV中所有必要的函数。
要包含代码,我们需要使用 include 关键字,并指定文件路径。以下代码中,头文件位于 opencv2 文件夹内。
1#include <opencv2/opencv.hpp>
命名空间是为变量、函数等提供作用域的声明。在每个作用域中,一个名称只能代表一个变量。同一作用域内不能有两个同名的变量。使用命名空间可以解决这个问题。我们可以在不同的命名空间中创建两个同名的变量或函数。
本课程将使用两个命名空间:cv 和 std。
本课程的目标是读取一张图像,显示它,并控制显示时间。但在开始之前,我们需要导入用于读取和处理媒体文件的头文件。
读取图像
要读取图像,首先需要获取图像的路径。我们将路径存储为字符串变量。
1std::string path = "/usercode/photo.jpg";
使用 imread(imagePath) 函数来读取图像。我们将 imagePath 作为参数传入该函数。接着,将图像数据存储在一个名为 image 的对象中,它是 Mat 类的一个实例。Mat 是一个n维数组类,用作图像的容器。
1cv::Mat img = cv::imread(path);
显示图像
要显示图像,需使用OpenCV库中的 imshow(name, ReadFile) 方法。
- 第一个参数
name是图像将被显示的窗口名称。 - 第二个参数
ReadFile是包含要显示图像的Mat对象的名称。
1cv::imshow("Image", img);
使用 waitKey()
当我们仅运行上述代码时,会发现图像打开后立即关闭。为了使图像显示一段时间,我们使用 waitKey(int) 方法。它接收一个以毫秒为单位的时间参数,表示图像将显示的时间长度。如果传入 0 作为参数,图像将无限期显示。语法如下:
1cv::waitKey(0);
读取图像的完整代码
读取图像的代码应如下所示:
No configuration found for ID: 17c11490ede88d2d4807ce744ed8b3dfff04cd04dd8f570d957e481a9691f960
我们已成功读取并显示了一张图像。