📅  最后修改于: 2023-12-03 14:49:48.039000             🧑  作者: Mango
OpenCV是一个开源计算机视觉库,提供了一系列的算法和工具,可以用于图像处理、计算机视觉和机器学习等领域。本文将介绍如何使用C++语言在OpenCV中读取和显示图像。
在OpenCV中,可以通过imread()
函数读取图像。这个函数的完整用法如下:
Mat imread(const String& filename, int flags=IMREAD_COLOR)
其中,filename
参数为图像文件的路径,flags
参数为读取图像的模式,可以取以下值:
IMREAD_COLOR
:读取RGB图像(默认值);IMREAD_GRAYSCALE
:读取灰度图像;IMREAD_UNCHANGED
:读取原始图像,包括alpha通道。以下是一个示例程序,演示如何读取一张图像并显示:
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int main(int argc, char* argv[])
{
// 读取图像
Mat image = imread("lena.jpg", IMREAD_COLOR);
// 判断是否成功读取
if (image.empty())
{
cout << "Failed to read image" << endl;
return -1;
}
// 显示图像
namedWindow("Image", WINDOW_NORMAL);
imshow("Image", image);
waitKey(0);
destroyWindow("Image");
return 0;
}
在这个程序中,我们首先使用imread()
函数读取了一张名为lena.jpg
的图像,读取后的图像存储在Mat
类型的变量image
中。接着,我们判断了一下是否成功读取了图像(如果image
为空则表示读取失败,这时候程序将退出)。最后,我们使用namedWindow()
函数创建了一个名为Image
的窗口,并使用imshow()
函数在这个窗口中显示了读取的图像。由于窗口内容不会自动关闭,所以我们使用waitKey()
函数等待用户输入,并使用destroyWindow()
函数关闭窗口。
在前面的示例程序中,我们已经演示了如何使用imshow()
函数在窗口中显示图像。除此之外,OpenCV还提供了一些可以方便地控制图像显示的函数。以下是一些常用的函数:
namedWindow(winname[, flags])
:创建一个名为winname
的窗口;destroyWindow(winname)
:关闭名为winname
的窗口;destroyAllWindows()
:关闭所有打开的窗口;resizeWindow(winname, width, height)
:调整名为winname
的窗口大小为width
和height
;moveWindow(winname, x, y)
:将名为winname
的窗口移动到坐标(x, y)
的位置;imshow(winname, mat)
:在名为winname
的窗口中显示mat
图像;waitKey(delay)
:等待delay
毫秒以接收键盘输入。如果delay=0
,则无限等待用户输入;setMouseCallback(winname, onMouse [, userData])
:为名为winname
的窗口设置鼠标回调函数,onMouse
是回调函数的名称,userData
是可以传递给回调函数的自定义数据。通过本文的介绍,我们学习了如何使用C++在OpenCV中读取和显示图像。在实际开发中,读取和显示图像是图像处理和计算机视觉任务的基础,因此这个技能是非常有用和必要的。如果想了解更多关于OpenCV的知识,请参考官方文档或者其他学习资料。