• OpenCV入门(C++/Python)- 使用OpenCV读取、显示和写入图像(一)


    读取、显示和写入图像是图像处理和计算机视觉的基础。即使裁剪、调整大小、旋转或应用不同的过滤器来处理图像,您也需要首先读取图像。因此,掌握这些基本操作很重要。

    1.imread()读取图像

    Python

    # import the cv2 library
    import cv2
     
    # The function cv2.imread() is used to read an image.
    img_grayscale = cv2.imread('test.jpg',0)
     
    # The function cv2.imshow() is used to display an image in a window.
    cv2.imshow('graycsale image',img_grayscale)
     
    # waitKey() waits for a key press to close the window and 0 specifies indefinite loop
    cv2.waitKey(0)
     
    # cv2.destroyAllWindows() simply destroys all the windows we created.
    cv2.destroyAllWindows()
     
    # The function cv2.imwrite() is used to write an image.
    cv2.imwrite('grayscale.jpg',img_grayscale)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    C++

    //Include Libraries
    #include
    #include
     
    // Namespace nullifies the use of cv::function(); 
    using namespace std;
    using namespace cv;
     
    // Read an image 
    Mat img_grayscale = imread("test.jpg", 0);
     
    // Display the image.
    imshow("grayscale image", img_grayscale); 
     
    // Wait for a keystroke.   
    waitKey(0);  
     
    // Destroys all the windows created                         
    destroyAllWindows();
     
    // Write the image in the same directory
    imwrite("grayscale.jpg", img_grayscale);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    imread()函数

    imread(filename,flags)

    • 第一个参数是图像名称,它需要文件的完全限定路径名
    • 第二个参数是一个可选的标志,允许您指定图像的表示方式。OpenCV为该标志提供了几个选项,但最常见的选项包括
      1. cv2.IMREAD_UNCHANGED or -1
      2. cv2.IMREAD_GRAYSCALE or 0
      3. cv2.IMREAD_COLOR or 1

    标志的默认值为1,它将在图像中读取为彩色图像。当您想以特定格式阅读图像时,只需指定适当的标志即可。

    在这一点上,请注意,OpenCV以BGR格式读取彩色图像,而大多数其他计算机视觉库使用RGB通道格式顺序。因此,当将OpenCV与其他工具包一起使用时,当您从一个库切换到另一个库时,不要忘记交换蓝色和红色通道。

    如下面的代码部分所示,我们将首先使用上述所有三个标志值在测试图像中阅读。
    Python

    # Read an image
    img_color = cv2.imread('test.jpg',cv2.IMREAD_COLOR)
    img_grayscale = cv2.imread('test.jpg',cv2.IMREAD_GRAYSCALE)
    img_unchanged = cv2.imread('test.jpg',cv2.IMREAD_UNCHANGED)
    
    • 1
    • 2
    • 3
    • 4

    C++

    // Read an image 
    Mat img_color = imread("test.jpg", IMREAD_COLOR);
    Mat img_grayscale = imread("test.jpg", IMREAD_GRAYSCALE);
    Mat img_unchanged = imread("test.jpg", IMREAD_UNCHANGED);
    
    • 1
    • 2
    • 3
    • 4

    Or

    Python

    img_color = cv2.imread('test.jpg',1)
    img_grayscale = cv2.imread('test.jpg',0)
    img_unchanged = cv2.imread('test.jpg',-1)
    
    • 1
    • 2
    • 3

    C++

    Mat img_color = imread("test.jpg", 1);
    Mat img_grayscale = imread("test.jpg", 0);
    Mat img_unchanged = imread("test.jpg", -1);
    
    • 1
    • 2
    • 3

    2.imshow()在窗口中显示图像

    在OpenCV中,您可以使用imshow()函数显示图像。语法如下所示:

    imshow(window_name,图像)

    此函数还接受两个参数:

    • 第一个参数是将显示在窗口上的窗口名称。
    • 第二个参数是您想要显示的图像。

    要同时显示多个图像,请为要显示的每个图像指定一个新的窗口名称。

    imshow()函数旨在与waitKey()和destroyAllWindows() / destroyWindow()函数一起使用。

    waitKey()

    waitKey()函数是一个键盘绑定函数。
    它需要一个参数,即显示窗口的时间(以毫秒为单位)。

    如果用户在此时间段内按下任何键,程序将继续。
    如果传递0,程序将无限期地等待按键。

    您还可以将该功能设置为检测键盘上的Q键或ESC键等特定按键,从而更明确地告诉哪个键将触发哪种行为

    destoryAllWindows()

    函数destoryAllWindows()会破坏我们创建的所有窗口。如果需要销毁特定窗口,请给出确切的窗口名称作为参数。使用deargetAllWindows()还可以从系统的主内存中清除窗口或图像。下面的代码示例显示了如何使用imshow()函数来显示您读取的图像。
    Python

    #Displays image inside a window
    cv2.imshow('color image',img_color)  
    cv2.imshow('grayscale image',img_grayscale)
    cv2.imshow('unchanged image',img_unchanged)
     
    # Waits for a keystroke
    cv2.waitKey(0)  
     
    # Destroys all the windows created
    cv2.destroyAllwindows() 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    C++

    // Create a window.
    namedWindow( "color image", WINDOW_AUTOSIZE );
    namedWindow( "grayscale image", WINDOW_AUTOSIZE );
    namedWindow( "unchanged image", WINDOW_AUTOSIZE );
     
    // Show the image inside it.
    imshow( "color image", img_color ); 
    imshow( "grayscale image", img_grayscale );
    imshow( "unchanged image", img_unchanged ); 
     
    // Wait for a keystroke.   
    waitKey(0);  
     
    // Destroys all the windows created                         
    destroyAllWindows();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    在这里插入图片描述

    3.imwrite()将图像写入文件目录

    最后,让我们讨论如何使用imwrite()函数将图像写入/保存到文件目录中。查看其语法:

    imwrite(文件名,图像)

    • 第一个参数是文件名,其中必须包括文件扩展名(例如.png、.jpg等)。OpenCV使用此文件扩展名来指定文件的格式。
    • 第二个参数是您想要保存的图像。如果图像保存成功,该函数返回True。

    请查看下面的代码。看看将图像写入磁盘有多简单。只需指定具有适当扩展名的文件名(前面有任何所需的路径)。包括包含图像数据的变量名称,您就完成了。
    Python

    cv2.imwrite('grayscale.jpg',img_grayscale)
    
    • 1

    C++

    imwrite("grayscale.jpg", img_grayscale);
    
    • 1
  • 相关阅读:
    简单ELK配置实现生产级别的日志采集和查询实践
    python+requests接口自动化测试框架实例详解教程
    HTML5期末大作业:游戏网站设计与实现——基于bootstrap响应式游戏资讯网站制作HTML+CSS+JavaScript...
    华为设备总部与分部配置
    Bingo NFT 如何帮助交易者和投资者分析市场
    Linux——IP协议1
    使用Specification与Example方式实现动态条件查询案例
    [附源码]计算机毕业设计springboot小太阳幼儿园学生管理系统
    Monaco Editor 中的 Keybinding 机制
    知行之桥堆内存及清理
  • 原文地址:https://blog.csdn.net/weixin_42010722/article/details/128147626