赞
踩
OpenCV 是任何计算机视觉或图像处理任务中最常用的库之一。在为图像处理应用不同的过滤器或执行任何与图像相关的任务之前,您必须知道如何读取图像、显示图像或写入图像。
OpenCV带有内置函数来执行这些基本操作。让我们看看如何在任务中使用这些函数。
在执行任何操作之前,请确保您的系统中有OpenCV,Numpy和Matplotlib(可选)。OpenCV在后端使用Numpy,并且需要Matplotlib来显示图像。
这是将在此处使用的原始图像:
OpenCV有一个内置函数,可以读取/加载/打开图像,即。让我们看看语法:cv2.imread()
- import cv2
- cv2.imread(Pathname, Flag)
它由两个参数组成:
路径:它包含要读取的图像的路径名。确保图像应位于同一目录中,或者应指定图像的完整路径名,否则将得到一个空矩阵。
旗:这是一个可选参数。它以您希望阅读的方式设置图像的格式。有三种类型的标志:
CV2.IMREAD_COLOR或 1:
这将通过从图像中删除任何透明度来以彩色模式读取图像。OpenCV 以 BGR 8 位格式加载彩色图像。默认情况下使用此标志。
CV2.IMREAD_GRAYSCALE或 0:
这将以灰度模式读取图像。
CV2.IMREAD_UNCHANGED 或 -1:
这将按原样读取图像,包括 alpha 通道(如果存在)。
让我们看看如何使用三种不同的标志来读取图像:
- img_colored = cv2.imread('dog.jpg', 1)
- img_grayscale = cv2.imread('dog.jpg', 0)
- img_unchanged = cv2.imread('dog.jpg', -1)
加载的图像对象将是一个 numpy ndarray。您可以使用 获取其尺寸。请注意,因为它首先返回高度,然后返回宽度,对于非灰度图像,它还返回颜色通道的数量:.shape
- img_colored = cv2.imread('dog.jpg', 1)
- height, width, num_channels = img.shape
- print(type(img_colored))
- print(height, width, num_channels)
- # <class 'numpy.ndarray'>
- # 404 606 3
-
-
- img_grayscale = cv2.imread('dog.jpg', 0)
- # only height and width for grayscale
- height, width = img.shape
OpenCV有一个内置函数,可以在窗口中显示图像,该窗口是。让我们看看语法:cv2.imshow()
cv2.imshow(WindowName, Image)
它由两个参数组成:
还有其他函数与此函数一起使用。
让我们看看狗的外观:
- img_colored = cv2.imread('dog.jpg', 1)
- cv2.imshow('Grayscale Image', img_colored)
- img_colored = cv2.imread('dog.jpg', 1)
- img_grayscale = cv2.imread('dog.jpg', 0)
- cv2.imshow('Grayscale Image', img_grayscale)
OpenCV有一个内置函数,可以将图像写入/保存到给定的路径,即。它会将您的图像保存在工作目录中。让我们看看语法:cv2.imwrite()
cv2.imshow(FileName, Image)
它由两个参数组成:
总而言之,您将看到一个示例,该示例将以灰度加载图像,显示它,然后保存它。
- import cv2
-
- # Reading an image
- img_gray = cv2.imread('dog.jpg', 0)
-
- # Display an image in a window
- cv2.imshow('Grayscale Image', img_gray)
-
- # Wait for a keystroke
- cv2.waitKey(0)
-
- # Destroy all the windows
- cv2.destroyAllWindows()
-
- # Write an image
- cv2.imwrite('dog_grayscale.jpg', img_gray)
您可以使用不同的函数在图像中绘制形状和文本:
cv2.line
cv2.rectangle
cv2.circle
cv2.ellipse
cv2.polylines
cv2.putText
- import numpy as np
- import cv2
-
- # Load an color image in grayscale
- img = cv2.imread('dog.jpg', 1)
- height, width, channels = img.shape
-
- # Draw a diagonal blue line with thickness of 5 px
- img = cv2.line(img, (0, 0), (width-1,height-1), (255, 0, 0), 5)
-
- # Rectangle: pt1, pt2, color, thickness
- x1 = width // 2
- img = cv2.rectangle(img, (x1, 0), (x1 + 150, 150), (0, 255, 0), 3)
-
- # Circle: center, radius, color, thickness, -1=fill
- img = cv2.circle(img, (447, 63), 63, (0, 0, 255), -1)
-
- # Ellipse
- img = cv2.ellipse(img, (width // 2, height // 2), (100, 50), 0, 0, 180, (0, 0, 255), -1)
-
- # Polygon
- pts = np.array([[10, 5], [20, 30], [70, 20], [50, 10]], np.int32)
- pts = pts.reshape((-1, 1, 2))
- img = cv2.polylines(img,[pts], True, (0, 255, 255))
-
- # Text
- font = cv2.FONT_ITALIC
- cv2.putText(img, 'OpenCV', (10, 500), font, 4, (255, 255, 255), 3, cv2.LINE_AA)
-
- cv2.imshow('image', img)
这是它的样子:
本文将帮助您开始您的 OpenCV 之旅。您学习了如何读取图像、如何显示图像、如何将其保存在本地目录中以及如何在图像中绘制形状。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。