当前位置:   article > 正文

实战OpenCV之图像显示_opencv显示图片

opencv显示图片

基础入门

        OpenCV提供的功能非常多,图像显示是最基础也是最直观的一部分。它让我们能够直观地看到算法处理后的效果,对于调试和验证都至关重要。在OpenCV中,图像显示主要依赖于以下四个关键的数据结构和函数。

        1、Mat类。这是OpenCV中最基本的数据结构,代表了一个多维的数组,通常用于存储图像数据。cv::Mat对象可以用来存储灰度图像、彩色图像,以及其他类型的矩阵数据。

        2、imshow函数。用于在指定窗口显示图像,函数原型为imshow(winname, mat)。其中,winname是窗口的名称,mat是要显示的图像矩阵,通常为cv::Mat对象。

        3、namedWindow函数。创建一个窗口,并为它分配一个名称。这一步虽然不是必须的,但在实际应用中通常会先创建窗口再显示图像,以确保窗口大小和位置符合预期。函数原型为namedWindow(winname, flags),其中,flags可以用来指定窗口的一些属性,比如:是否可调整大小等。

        4、waitKey函数。用于等待键盘事件发生,即等待用户按下某个键。这对于图像显示至关重要,因为如果没有它,图像窗口会立即关闭。函数原型为waitKey(delay),参数delay指定了等待的时间,以毫秒为单位。如果设置为0,则表示无限期等待。

实战解析

        下面的实战代码读取一张图片并显示在屏幕上,直到用户按下任意键后关闭窗口。

        第一行和第二行引入了OpenCV库的主要头文件,并声明使用cv命名空间,这样就不必在每次调用OpenCV函数时都加上cv::前缀。

        在main函数中,我们使用imread函数尝试从指定路径(这里是"OpenCV.png",实际使用时,应替换为真实图片路径)读取图像,并将其存储在一个名为image的Mat对象中。接下来,判断image是否为空,即检查图像是否被成功读取。如果不为空,则输出错误信息并返回-1,结束程序执行。

        然后,我们使用namedWindow函数创建一个名为"Image Show"的窗口,并设置了标志WINDOW_NORMAL,以允许用户调整窗口的大小。通过imshow函数,在刚刚创建的窗口中显示image图像。

        最后,调用waitKey(0)函数,使程序暂停并等待用户按下任何键盘按键。参数0意味着程序将无限制地等待,直到接收到键盘输入。当用户按键后,调用destroyAllWindows()函数来关闭所有由OpenCV创建的窗口。

  1. #include <opencv2/opencv.hpp>
  2. using namespace cv;
  3. #include <iostream>
  4. using namespace std;
  5. int main()
  6. {
  7. // 读取图像,请替换为你自己的图片路径
  8. Mat image = imread("OpenCV.png");
  9. // 检查图像是否被正确读取
  10. if(image.empty())
  11. {
  12. cout << "Can not open or find the image" << endl;
  13. return -1;
  14. }
  15. // 创建一个名为"Image Show"的窗口,WINDOW_NORMAL允许调整窗口大小
  16. namedWindow("Image Show", WINDOW_NORMAL);
  17. // 在窗口中显示图像
  18. imshow("Image Show", image);
  19. // 等待用户按键,然后关闭窗口;0表示无限等待,直到用户按键
  20. waitKey(0);
  21. // 关闭所有窗口
  22. destroyAllWindows();
  23. return 0;
  24. }

窗口自适应

        在某些场景下,我们希望窗口能自动适应图像的尺寸。此时,可以使用resizeWindow函数,并传入图像的宽度和高度。

  1. namedWindow("Image Show", WINDOW_NORMAL);
  2. // image.cols代表图像的宽度, image.rows代表图像的高度
  3. resizeWindow("Image Show", image.cols, image.rows);
  4. imshow("Image Show", image);

        执行上面的示例代码,运行效果可参考下图。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/1012283
推荐阅读
相关标签
  

闽ICP备14008679号