opencv 基础 (一):使用OpenCV读取、显示和写入图像 | 您所在的位置:网站首页 › 利用imread函数读取一幅图像 › opencv 基础 (一):使用OpenCV读取、显示和写入图像 |
世界上最大的计算机视觉库OpenCV有这三个内置功能,让我们来看看它们到底是做什么的: Imread()帮助我们读取图像 -mshow()在窗口中显示图像imwrite()将图像写入文件目录我们将使用下图来演示这里的所有函数 我们从导入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 1flags的默认值是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 实验室设备网 版权所有 |