已经是会员了,怎么提出文字首字母
974
2022-05-28
简 介:
本文中,你了解了: imread(), imshow()以及imwrite()等函数用于图像的读取、显示和保存; waitKey(), destroyAllWindows()函数用于:对于waitKey()函数建议你多做些实验,因为它的某些特性比较容易让人搞混淆。 你对它越熟悉,你就能够更好的掌握它。对于文中的代码你可以拷贝粘贴下来进行实验。
关键词:
OpenCV,Image,imread,imwrite
前 言
目 录
Contents
读取图像
显示图像
图像写入
总 结
前 言
目 录
Contents
读取图像
显示图像
图像写入
总 结
本文来自于Read, Display and Write an Image using OpenCV ,对于应用OpenCV完成图片的读取、显示和写入。
对于图片读取、显示和写入文件是图像处理和计算机视觉最基本的操作过程。甚至在对于图片进行截取、缩放、旋转以及利用各种滤波器进行处理,你所要做的第一件事情就是从文件中将图片读取到计算机内存。所以掌握这项基本的操作非常重要。
OpenCV,作为世界上最大的计算机视觉库,利用内置的三个函数来完成这些操作。它们分别是:
1. imread() 读取图像;
2. imshow() 显示图像;
3. imwrite() 将图像写入文件;
下面是本文所使用的样例图片。
首先,下面的代码读取上述文件,并进行显示。查看代码是如何包含上述三条函数的。继续往下处理我们将对应用在代码中的每个函数进行讨论。
# 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
读
取图片,应用OpenCV中的imread()函数。下面函数调用语法:
imread(filename, flags)
1
它需要了两个参数:
1. 第一个参数为图像文件名称,需要文件的全路径名称。
2. 第二个参数说明图片如何表示。OpenCV提供了几个对于图片数据表示的方式,下面三个是最常用的:
* cv2.IMREAD_UNCHANGED or -1
* cv2.IMREAD_GRAYSCALE or 0
* cv2.IMREAD_COLOR or 1
函数缺省的flags的参数为1,也就是将读取的图片表示成彩色图像。你可以使用不同的flags参数来将读取的图片数据表示成特殊的格式。下面我们测试一下不同的 flags选项所产生的效果。
在这里需要强调一下,OpenCV表示彩色图片使用的为BGR格式,而大多数其他计算机视觉库则使用的RGB格式表示。所以在使用OpenCV配合替他工具包使用的时候,不要忘记将蓝色与红色通道进行交换,这样才能够切换到其它图像处理库。
下面的代码中,我们首先读取了测试图像,测试上面三种flags选项E对应的情况。
# 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
或者
img_color = cv2.imread('test.jpg',1) img_grayscale = cv2.imread('test.jpg',0) img_unchanged = cv2.imread('test.jpg',-1)
1
2
3
在
OpenCV中,使用imshow()函数来显示图像。调用语法为:
imshow(window_name, image)
1
这个函数也需要两个参数:
1. 第一个参数是显示图片窗口的名称;
2. 第二个参数就是需要显示的图片数据;
如果显示多个图片,你需要为每个图片显示的窗口指定新的窗口名称。
函数 imshow()通常与 waitKey()、distroyAllWindow()/distroyWindow() 函数联合使用。
函数 waitKey() 用于绑定键盘:
它带有一个数字参数,指明窗口显示的时间(单位ms);
在等待时间内,用户输入任何字符,程序将会立即往下进行;
如果等待参数为0,程序将会无限期等待用户的输入字符;
你也可以设定该函数检测特殊的按键操作,比如Q键,或者 ESC键。然后显示每个案件特殊的行为;
函数 distroyAllWindows() 将所有显示图片所创建的窗口关闭。如果想关闭某个窗口,则需要将该窗口的名称指定。使用 distroyAllWindows() 也将窗口和图片从计算机内存清除。下面的代码演示了函数 imshow()的是如何被用于显示你读入的图片的。
#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
下面动图显示了整个对于图片的读入、显示、关闭显示窗口的整个过程。
在下面三个输出屏幕中,你可以看到:
1. 第一个图片显示为彩色;
2. 接下来是灰度图片;
3. 第三个是图片的原始格式,在读取的时候使用参数: cv2.IMREAD_UNCHANGED
下面的动图显示了在读取、显示图片过程中没有应用waitKey()函数。用于图片显示的窗口在几个毫秒内就关闭了,所以在屏幕上并没有留下图片窗口。
最
后,我们来讨论一下如何把一个图像写入、保存在文件目录中。所使用的函数为 imwrite(),它的语法为:
imwrite(filename, image)
1
1. 第一个参数为文件名称,这个文件名称必须包含文件的扩展名,比如 .png,.jpg 等等。OpenCV就是根据文件名称的扩展名来确定保存文件的格式的。
2. 第二个参数就是你所要保存的图像数据。 如果图片成功保存在目录中的文件,函数返回True。
下面的代码显示了保存的过程,这个存盘的过程是很简单的。只是将带有正确扩展名称的文件名输入正确(带有想要保存路径名称),并且将图像数据变量输入,你就完成了图片的存储。
cv2.imwrite('grayscale.jpg',img_grayscale)
1
本
文中,你了解了:
imread(), imshow()以及imwrite()等函数用于图像的读取、显示和保存;
waitKey(), destroyAllWindows()函数用于:
在键盘操作之后关闭显示图像的窗口;
将图像数据和窗口从内存清除。
对于waitKey()函数建议你多做些实验,因为它的某些特性比较容易让人搞混淆。 你对它越熟悉,你就能够更好的掌握它。对于文中的代码你可以拷贝粘贴下来进行实验。
■ 相关文献链接:
Read, Display and Write an Image using OpenCV
● 相关图表链接:
图1.1 本文所使用的样例图片
图2.1 读入、显示、关闭图片窗口
图2.2 使用imshow()显示图片
图2.3 使用imshow()显示的灰度图片
图2.4 读取图片是使用的参数 cv2.IMREAD_UNCHANGED
图2.5 在显示图片的过程中没有应用waitKey() 函数
OpenCV
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。