opencv 基础 (一):使用OpenCV读取、显示和写入图像 您所在的位置:网站首页 利用imread函数读取一幅图像 opencv 基础 (一):使用OpenCV读取、显示和写入图像

opencv 基础 (一):使用OpenCV读取、显示和写入图像

2023-12-24 22:07| 来源: 网络整理| 查看: 265

在这里插入图片描述 读取、显示和写入图像是图像处理和计算机视觉的基础。即使在剪切、调整大小、旋转或应用不同的过滤器来处理图像时,你也需要先读取图像。所以掌握这些基本运算是很重要的。

世界上最大的计算机视觉库OpenCV有这三个内置功能,让我们来看看它们到底是做什么的:

Imread()帮助我们读取图像 -mshow()在窗口中显示图像imwrite()将图像写入文件目录

我们将使用下图来演示这里的所有函数 在这里插入图片描述 首先,看一看这个代码示例。它读取并显示上面的图像。看它是如何包含我们刚刚提到的所有三个函数的。随着您的深入,我们将讨论这个实现中使用的每一个函数。

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) 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);

我们从导入Python和c++的OpenCV库开始(如下所示)。

Python # import the cv2 library import cv2

在c++中,使用#include(如下所示)来完成相同的任务。还可以为它指定namespaces,从而直接引用函数名称。不需要在它们前面加上名称空间(例如,你可以直接使用read()而不是cv::imread())。

C++ //Include Libraries #include #include // Namespace nullifies the use of cv::function(); using namespace std; using namespace cv; 读取一张图片

读取图像时,使用OpenCV中的imread()函数。这里的语法:

imread(filename, flags)

它有两个参数:

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

flags的默认值是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) 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);

或者

Python img_color = cv2.imread('test.jpg',1) img_grayscale = cv2.imread('test.jpg',0) img_unchanged = cv2.imread('test.jpg',-1) C++ Mat img_color = imread("test.jpg", 1); Mat img_grayscale = imread("test.jpg", 0); Mat img_unchanged = imread("test.jpg", -1); 显示一个图像

在OpenCV中,使用imshow()函数显示图像。这里的语法如下:

imshow(window_name, image)

他的函数也有两个参数:

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

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

imshow()函数被设计成与waitKey()和destroyAllWindows() / destroyWindow()函数一起使用。 waitKey()函数是一个键盘绑定函数。

它只接受一个参数,即显示窗口的时间(以毫秒为单位)。如果用户在这段时间内按下任意键,程序将继续运行。如果传递了0,程序将无限期地等待按键。还可以设置函数来检测特定的按键,如键盘上的Q键或ESC键,从而更明确地告诉哪个键应该触发哪个行为。

destroyAllWindows()函数会销毁我们创建的所有窗口。如果一个特定的窗口需要被销毁,给出确切的窗口名作为参数。使用destroyAllWindows()还可以从系统的主内存中清除窗口或映像。下面的代码示例展示了如何使用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() 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();

下面的GIF演示了执行代码、可视化输出和关闭输出窗口的过程 在这里插入图片描述

写入图像

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

imwrite(filename, image). 第一个参数是文件名,它必须包括文件名扩展名(例如.png、.jpg等)。OpenCV使用这个文件名扩展名来指定文件的格式。第二个参数是要保存的图像。如果成功保存图像,则函数返回True。 Python cv2.imwrite('grayscale.jpg',img_grayscale) C++ imwrite("grayscale.jpg", img_grayscale);


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有