📜  使用C++在OpenCV中读取和显示图像(1)

📅  最后修改于: 2023-12-03 14:49:48.039000             🧑  作者: Mango

使用C++在OpenCV中读取和显示图像

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的窗口大小为widthheight
  • 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的知识,请参考官方文档或者其他学习资料。