当前位置:   article > 正文

使用 Python 在 OpenCV 中处理图像_python opencv 图片处理

python opencv 图片处理

OpenCV 是任何计算机视觉或图像处理任务中最常用的库之一。在为图像处理应用不同的过滤器或执行任何与图像相关的任务之前,您必须知道如何读取图像、显示图像或写入图像。

OpenCV带有内置函数来执行这些基本操作。让我们看看如何在任务中使用这些函数。

在执行任何操作之前,请确保您的系统中有OpenCV,Numpy和Matplotlib(可选)。OpenCV在后端使用Numpy,并且需要Matplotlib来显示图像。

这是将在此处使用的原始图像:

读取图像

OpenCV有一个内置函数,可以读取/加载/打开图像,即。让我们看看语法:cv2.imread()

  1. import cv2
  2. cv2.imread(Pathname, Flag)

它由两个参数组成:

  • 路径:它包含要读取的图像的路径名。确保图像应位于同一目录中,或者应指定图像的完整路径名,否则将得到一个空矩阵。

  • 旗:这是一个可选参数。它以您希望阅读的方式设置图像的格式。有三种类型的标志:

CV2.IMREAD_COLOR或 1
这将通过从图像中删除任何透明度来以彩色模式读取图像。OpenCV 以 BGR 8 位格式加载彩色图像。默认情况下使用此标志。

CV2.IMREAD_GRAYSCALE或 0
这将以灰度模式读取图像。

CV2.IMREAD_UNCHANGED 或 -1
这将按原样读取图像,包括 alpha 通道(如果存在)。

让我们看看如何使用三种不同的标志来读取图像:

  1. img_colored = cv2.imread('dog.jpg', 1)
  2. img_grayscale = cv2.imread('dog.jpg', 0)
  3. img_unchanged = cv2.imread('dog.jpg', -1)

加载的图像对象将是一个 numpy ndarray。您可以使用 获取其尺寸。请注意,因为它首先返回高度,然后返回宽度,对于非灰度图像,它还返回颜色通道的数量:.shape

  1. img_colored = cv2.imread('dog.jpg', 1)
  2. height, width, num_channels = img.shape
  3. print(type(img_colored))
  4. print(height, width, num_channels)
  5. # <class 'numpy.ndarray'>
  6. # 404 606 3
  7. img_grayscale = cv2.imread('dog.jpg', 0)
  8. # only height and width for grayscale
  9. height, width = img.shape

显示图像

OpenCV有一个内置函数,可以在窗口中显示图像,该窗口是。让我们看看语法:cv2.imshow()

cv2.imshow(WindowName, Image)

它由两个参数组成:

  • 窗口名称:它指定包含图像的窗口的名称。这将帮助您一次显示多个图像,您可以为每个图像指定不同的窗口名称。
  • 图像:这是将显示的图像。

还有其他函数与此函数一起使用。

  • cv2.waitKey():它将在屏幕上显示以毫秒为单位的时间段的窗口。该值应为正整数。如果值为 0,它将无限期地按住窗口,直到您按下某个键。
  • cv2.destroyAllWindows():它将从屏幕和创建的内存中销毁所有打开的窗口。
  • cv2.destroyWindow():它将破坏特定的窗口。参数将是要销毁的窗口名称。

让我们看看的外观:

  1. img_colored = cv2.imread('dog.jpg', 1)
  2. cv2.imshow('Grayscale Image', img_colored)

  1. img_colored = cv2.imread('dog.jpg', 1)
  2. img_grayscale = cv2.imread('dog.jpg', 0)
  3. cv2.imshow('Grayscale Image', img_grayscale)

编写映像

OpenCV有一个内置函数,可以将图像写入/保存到给定的路径,即。它会将您的图像保存在工作目录中。让我们看看语法:cv2.imwrite()

cv2.imshow(FileName, Image)

它由两个参数组成:

  • 文件名:它包含文件的名称,该文件应该是.jpg,.png等格式。
  • 图像:它是将保存的图像的名称。

总而言之,您将看到一个示例,该示例将以灰度加载图像,显示它,然后保存它。

  1. import cv2
  2. # Reading an image
  3. img_gray = cv2.imread('dog.jpg', 0)
  4. # Display an image in a window
  5. cv2.imshow('Grayscale Image', img_gray)
  6. # Wait for a keystroke
  7. cv2.waitKey(0)
  8. # Destroy all the windows
  9. cv2.destroyAllWindows()
  10. # Write an image
  11. cv2.imwrite('dog_grayscale.jpg', img_gray)

绘制和处理图像

您可以使用不同的函数在图像中绘制形状和文本:

  • cv2.line
  • cv2.rectangle
  • cv2.circle
  • cv2.ellipse
  • cv2.polylines
  • cv2.putText
  1. import numpy as np
  2. import cv2
  3. # Load an color image in grayscale
  4. img = cv2.imread('dog.jpg', 1)
  5. height, width, channels = img.shape
  6. # Draw a diagonal blue line with thickness of 5 px
  7. img = cv2.line(img, (0, 0), (width-1,height-1), (255, 0, 0), 5)
  8. # Rectangle: pt1, pt2, color, thickness
  9. x1 = width // 2
  10. img = cv2.rectangle(img, (x1, 0), (x1 + 150, 150), (0, 255, 0), 3)
  11. # Circle: center, radius, color, thickness, -1=fill
  12. img = cv2.circle(img, (447, 63), 63, (0, 0, 255), -1)
  13. # Ellipse
  14. img = cv2.ellipse(img, (width // 2, height // 2), (100, 50), 0, 0, 180, (0, 0, 255), -1)
  15. # Polygon
  16. pts = np.array([[10, 5], [20, 30], [70, 20], [50, 10]], np.int32)
  17. pts = pts.reshape((-1, 1, 2))
  18. img = cv2.polylines(img,[pts], True, (0, 255, 255))
  19. # Text
  20. font = cv2.FONT_ITALIC
  21. cv2.putText(img, 'OpenCV', (10, 500), font, 4, (255, 255, 255), 3, cv2.LINE_AA)
  22. cv2.imshow('image', img)

这是它的样子:

结语

本文将帮助您开始您的 OpenCV 之旅。您学习了如何读取图像、如何显示图像、如何将其保存在本地目录中以及如何在图像中绘制形状。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/649102
推荐阅读
相关标签
  

闽ICP备14008679号