网站建设的实验心得,百度站长怎么验证网站,05网学霸,wordpress侧栏推荐文章目录 目标
使用OpenCV
显示图像
写入图像
总结使用
使用Matplotlib 注#xff1a;图片后续补充
目标
在这里#xff0c;你将了解如何使用Python编程语言中的OpenCV库#xff0c;实现读取、显示和保存图像的功能。具体来说#xff0c;你将学习以下函数的用法#xf…目录 目标
使用OpenCV
显示图像
写入图像
总结使用
使用Matplotlib 注图片后续补充
目标
在这里你将了解如何使用Python编程语言中的OpenCV库实现读取、显示和保存图像的功能。具体来说你将学习以下函数的用法cv.imread() 用于读取图像cv.imshow() 用于显示图像cv.imwrite() 用于将图像保存到本地文件系统中。
如果你有兴趣还可以学习如何使用Matplotlib库来显示图像这也是一种常见的图像显示方式。
在使用OpenCV库读取图像时需要使用cv.imread()函数。读取图像时需要提供图像文件的路径或文件名函数将返回一个图像对象。
使用OpenCV 除此之外cv.imread()函数还可以接收一个额外的参数用于指定图像的读取方式。具体来说可以使用以下三个标志
cv.IMREAD_COLOR用于加载彩色图像会忽略任何图像的透明度这也是默认标志cv.IMREAD_GRAYSCALE用于以灰度模式加载图像cv.IMREAD_UNCHANGED用于加载图像包括alpha通道。
此外还可以传递整数1、0或-1来表示这三个标志。
下面是使用cv.imread()函数读取图像的示例代码
import numpy as np
import cv2 as cv加载彩色灰度图像
img cv.imread(messi5.jpg, 0) 在这里0代表读取灰度图像即将彩色图像转换为灰度图像 另外 cv.IMREAD_COLOR 或 1读取彩色图像忽略 alpha 通道相当于使用默认值 1。cv.IMREAD_GRAYSCALE 或 0读取灰度图像。cv.IMREAD_UNCHANGED 或 -1读取原始图像包括 alpha 通道如果有。下面为效果图没有报错代表读取成功 警告
如果在使用OpenCV库读取图像时提供的图像路径错误不会引发任何错误但是打印读取的图像对象时将返回None。换句话说即使图像路径错误程序也不会崩溃或抛出异常而是返回一个空对象。
因此为了确保程序能够正确读取图像建议在提供图像路径之前先检查路径是否正确以避免意外的错误。
显示图像
使用函数**cv.imshow()**可以在窗口中显示图像。该函数会自动根据图像尺寸调整窗口大小。
在调用**cv.imshow()**函数时第一个参数是窗口名称是一个字符串类型的值。第二个参数是要显示的图像对象。你可以创建多个窗口并指定不同的窗口名称以显示多个图像。
import cv2 as cv#加载彩色灰度图像
img cv.imread(messi5.jpg,0)cv.imshow(image,img)
cv.waitKey(0)
cv.destroyAllWindows()
窗口的屏幕截图如下所示 在使用OpenCV库显示图像时我们需要使用函数cv.imshow()。该函数需要一个窗口名称作为第一个参数并需要传递要显示的图像作为第二个参数。调用该函数后可以使用**cv.waitKey()**函数等待用户交互事件。
cv.waitKey()函数是一个键盘绑定函数它等待指定毫秒数的时间等待用户按下任何键或交互事件发生。 如果时间到期时仍未发生交互事件则程序将继续执行。如果将0作为参数传递则程序将无限等待用户交互事件。该函数还可以用于检测特定按键的按下事件例如按下键盘上的字母a。需要注意的是为了确保图像能够正确显示必须在显示图像后使用cv.waitKey()**函数。 cv.destroyAllWindows()函数可以用于销毁我们创建的所有窗口而cv.destroyWindow()函数可以销毁特定的窗口。 需要注意的是在某些情况下可以在创建一个空的窗口之后再将图像加载到该窗口中。这时可以使用cv.namedWindow()**函数来设置窗口的属性例如是否可以调整窗口大小。如果需要显示的图像尺寸过大或需要在窗口中添加跟踪栏时可以使用该函数来设置窗口大小。 下面是使用OpenCV库显示图像的示例代码
cv.namedWindow(imagecv.WINDOW_NORMAL)
cv.imshow(imageimg)
cv.waitKey(0)
cv.destroyAllWindows()
效果图 写入图像
在使用OpenCV库保存图像时需要使用函数cv.imwrite()。该函数需要两个参数第一个参数是要保存的文件名第二个参数是要保存的图像对象。
具体来说你可以像这样调用cv.imwrite()函数cv.imwrite(messigray.pngimg)。这将会把图像以PNG格式保存在工作目录中文件名为messigray.png。
需要注意的是cv.imwrite()函数可以保存多种不同格式的图像例如PNG、JPEG、BMP等。在调用该函数时需要根据需要指定要保存的图像格式即文件扩展名。
总结使用
下面的代码演示了如何使用OpenCV库加载、显示和保存图像。具体来说它加载一张灰度图像将其显示在屏幕上等待用户按下键盘按键。如果用户按下s键则程序将保存图像到本地并退出如果用户按下ESC键则程序将直接退出而不保存图像。
import numpy as np
import cv2 as cv
img cv.imread(messi5.jpg,0)
cv.imshow(image,img)
k cv.waitKey(0)
if k 27: # 等待ESC退出cv.destroyAllWindows()
elif k ord(s): # 等待关键字保存和退出cv.imwrite(messigray.png,img)cv.destroyAllWindows() 警告
如果使用的是64位计算机则必须k cv.waitKey(0)按如下所示修改行k cv.waitKey(0) 0xFF。 这是因为在64位计算机上**cv.waitKey()**函数返回一个64位整数但是ASCII码值只有8位。因此将返回值与0xFF即255进行按位与运算可以保留返回值的低8位这是ASCII码的有效范围。 这种修改可以确保在64位计算机上正确读取键盘输入并避免潜在的兼容性问题。 使用Matplotlib
Matplotlib是一款Python的绘图库可以提供多种绘图方法方便进行数据可视化和图像处理。在接下来的学习中你将学习到如何使用Matplotlib库来展示和处理图像。通过Matplotlib你可以方便地对图像进行缩放、保存等操作。
import numpy as np
import cv2 as cv
from matplotlib import pyplot as plt
img cv.imread(messi5.jpg,0)
plt.imshow(img, cmap gray, interpolation bicubic)
plt.xticks([]), plt.yticks([]) # 隐藏 x 轴和 y 轴上的刻度值
plt.show()
窗口的屏幕截图如下所示 另外有空可看看
Matplotlib提供了许多绘图选项可以根据需求进行图像的处理和展示。如果需要了解更多的绘图选项可以参考Matplotlib文档以获取更多详细信息其中会涵盖许多实用的技巧和方法。
需要注意的是 当使用OpenCV加载彩色图像时它处于BGR模式而Matplotlib以RGB模式显示图像。因此如果使用OpenCV加载彩色图像那么在Matplotlib中将无法正确显示彩色图像。如果遇到这种情况可以采用一些转换方法来将图像从BGR模式转换为RGB模式以便正确地在Matplotlib中显示彩色图像。关于这个问题我们将在接下来的练习中进行更详细的讨论。