opencv常用API记录(python版)

文章目录

    • 1. cv2.minAreaRect
    • 2. cv2.boxPoints()
    • 3. cv2.drawContours()
    • 4. cv2.GaussianBlur
    • 5. cv2.Laplacian

1. cv2.minAreaRect

函数cv2.minAreaRect()是OpenCV中用于计算最小外接矩形的函数。它可以根据给定的轮廓点集,计算出一个包围该轮廓的最小外接矩形。

以下是cv2.minAreaRect()函数的基本用法和参数说明:

rect = cv2.minAreaRect(points)

参数解释:

  • points:包含轮廓点集的数组或矩阵。每个点可以表示为(x, y)的二维坐标。
  • rect:返回的最小外接矩形,是一个(center(x, y), (width, height), angle)的元组。其中,center表示矩形中心点的坐标,(width, height)表示矩形的宽度和高度,angle表示矩形的倾斜角度(逆时针方向为正)。

下面是一个简单的示例,演示了如何使用cv2.minAreaRect()函数计算轮廓的最小外接矩形:

import cv2

# 读取图像并转换为灰度图像
image = cv2.imread('your_image.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 使用阈值化或其他方法得到轮廓
_, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

# 获取最小外接矩形
rect = cv2.minAreaRect(contours[0])

# 绘制最小外接矩形
box = cv2.boxPoints(rect)
box = np.int0(box)
cv2.drawContours(image, [box], 0, (0, 255, 0), 2)

# 显示图像
cv2.imshow('Min Area Rectangle', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

在上述示例中,我们首先将图像转换为灰度图像,并使用阈值化操作、边缘检测等方法获取轮廓。然后,通过调用cv2.minAreaRect()函数来计算最小外接矩形。接着,使用cv2.boxPoints()函数将最小外接矩形转换为顶点坐标,并使用cv2.drawContours()函数绘制该矩形的边界框。最后,显示带有绘制矩形的图像。

4.8.0.74版本举例:

opencv常用API记录(python版)_第1张图片

2. cv2.boxPoints()

cv2.boxPoints()是OpenCV中的一个函数,用于计算给定旋转矩形的顶点坐标。旋转矩形是一个矩形,可以在图像中进行旋转。cv2.boxPoints()函数接受一个表示旋转矩形的参数,并返回一个四个顶点坐标的NumPy数组。

函数原型如下:

points = cv2.boxPoints(box)

其中,box是表示旋转矩形的参数,它可以是一个元组或一个包含4个浮点数的数组,表示旋转矩形的中心点坐标、宽度、高度和旋转角度。

cv2.boxPoints()函数返回一个形状为(4, 2)的NumPy数组,其中每一行表示一个顶点的坐标。

以下是一个示例,演示如何使用cv2.boxPoints()函数计算旋转矩形的顶点坐标:

import cv2

# 创建一个旋转矩形
rect = ((100, 100), (200, 100), 30)  # 格式为((中心点坐标), (宽度, 高度), 旋转角度)

# 计算顶点坐标
points = cv2.boxPoints(rect)

print(points)

在示例中,我们创建了一个旋转矩形rect,其中旋转角度为30度。然后调用cv2.boxPoints()函数计算旋转矩形的顶点坐标,并将结果存储在points中。最后,我们打印出顶点坐标。

运行代码后,你将得到一个形状为(4, 2)的NumPy数组,其中每一行表示旋转矩形的一个顶点的坐标。

注意:返回的坐标顺序是不确定的。

3. cv2.drawContours()

函数cv2.drawContours()是OpenCV中用于绘制轮廓的函数之一。它可以在图像上绘制指定的轮廓,用于可视化和分析图像中的对象边界。

以下是cv2.drawContours()函数的基本用法和参数说明:

image = cv2.drawContours(image, contours, contourIdx, color, thickness[, lineType[, hierarchy[, maxLevel[, offset]]]])

参数解释:

  • image:用于绘制轮廓的输入图像。
  • contours:包含所有轮廓的列表。每个轮廓是一个由点组成的数组。
  • contourIdx:表示要绘制的轮廓索引,-1表示绘制所有轮廓。
  • color:绘制轮廓的颜色,可以是一个RGB元组或整数值。例如,(0, 255, 0)表示绿色轮廓。
  • thickness:绘制轮廓的线条宽度,为正整数。使用-1表示填充轮廓内部。
  • lineType(可选):指定绘制线条的类型,默认为8连接线。可以使用cv2.LINE_AA来绘制抗锯齿线条。
  • hierarchy(可选):用于轮廓的层次结构信息。通常在查找轮廓时会返回。如果不需要轮廓层次信息,可以忽略。
  • maxLevel(可选):绘制轮廓的最大层级,如果设置为0,则绘制所有层级的轮廓。默认值为0。
  • offset(可选):绘制轮廓的偏移量,用于对轮廓进行平移。默认情况下为(0, 0)

示例使用方法如下:

import cv2
import numpy as np

# 读取图像并转换为灰度图像
image = cv2.imread('your_image.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 使用阈值化或其他方法得到轮廓
_, threshold = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
contours, _ = cv2.findContours(threshold, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

# 绘制轮廓
cv2.drawContours(image, contours, -1, (0, 255, 0), 2)

# 显示图像
cv2.imshow('Contours', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

在上述示例中,我们首先将图像转换为灰度图像,然后使用阈值化操作、边缘检测等方法得到轮廓。接下来,使用cv2.drawContours()函数绘制图像中的轮廓,并将其显示出来。通过调整参数,如轮廓索引、颜色、线条宽度等,可以对绘制的轮廓进行不同样式的定制。

4. cv2.GaussianBlur

cv2.GaussianBlur()是OpenCV中的一个函数,用于对图像进行高斯模糊处理。高斯模糊是一种常用的图像平滑滤波方法,它利用高斯函数对图像进行加权平均,降低图像的噪声和细节。

函数原型如下:

blurred_image = cv2.GaussianBlur(src, ksize, sigmaX[, dst[, sigmaY[, borderType]]])

参数说明:

  • src:输入图像,可以是单通道或多通道图像(8位无符号或浮点型)。
  • ksize:高斯核的大小,指定为ksize=(width, height),width和height必须是奇数且大于0。它表示在X和Y方向上的高斯核大小。
  • sigmaX:在X方向上的高斯核标准差。
  • dst:可选参数,输出图像。
  • sigmaY:可选参数,在Y方向上的高斯核标准差,如果未指定,则默认与sigmaX相等。
  • borderType:可选参数,用于处理边界的插值方法,默认为cv2.BORDER_DEFAULT

以下是一个示例,演示如何使用cv2.GaussianBlur()函数对图像进行高斯模糊处理:

import cv2

# 读取图像
image = cv2.imread('image.jpg')

# 高斯模糊处理
blurred_image = cv2.GaussianBlur(image, (5, 5), 0)

# 显示原始图像和模糊处理后的图像
cv2.imshow('Original Image', image)
cv2.imshow('Blurred Image', blurred_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

在示例中,我们首先使用cv2.imread()函数读取一张图像。然后,我们使用cv2.GaussianBlur()函数对图像进行高斯模糊处理,指定了高斯核大小(5, 5)和标准差0。最后,我们使用cv2.imshow()函数显示原始图像和模糊处理后的图像。

运行代码后,你将看到显示了原始图像和经过高斯模糊处理后的图像。模糊处理后的图像会减少噪声,并使图像变得更加平滑。

5. cv2.Laplacian

cv2.Laplacian()是OpenCV中的一个函数,用于对图像进行Laplacian滤波处理,以检测图像中的边缘。Laplacian滤波器是一种二阶微分滤波器,它对图像的二阶导数进行计算,从而凸显出图像中的边缘或颜色变化区域。

函数原型如下:

dst = cv2.Laplacian(src, ddepth[, dst[, ksize[, scale[, delta[, borderType]]]]])

参数说明:

  • src:输入图像,一般为灰度图像(单通道图像)。
  • ddepth:输出图像的深度,可以是cv2.CV_64F-1(表示与输入图像的深度相同)。
  • dst:可选参数,输出图像。
  • ksize:可选参数,Laplacian滤波器的孔径大小,必须为一个奇数。如果忽略该参数,默认使用3x3的孔径。
  • scale:可选参数,可选参数,将计算结果进行缩放的比例因子,默认为1。
  • delta:可选参数,将计算结果进行平移的数值,默认为0。
  • borderType:可选参数,用于处理边界的插值方法,默认为cv2.BORDER_DEFAULT

以下是一个示例,演示如何使用cv2.Laplacian()函数对图像进行Laplacian滤波处理:

import cv2
import numpy as np

# 读取灰度图像
image_gray = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)

# 使用Laplacian滤波器处理图像
laplacian = cv2.Laplacian(image_gray, cv2.CV_64F)

# 将结果取绝对值并转换为8位无符号整数类型
laplacian = np.uint8(np.absolute(laplacian))

# 显示原始图像和Laplacian滤波器处理后的图像
cv2.imshow('Original Image', image_gray)
cv2.imshow('Laplacian Filter', laplacian)
cv2.waitKey(0)
cv2.destroyAllWindows()

在示例中,我们首先使用cv2.imread()函数读取一张图像,并将其转换为灰度图像。然后,我们使用cv2.Laplacian()函数对灰度图像进行Laplacian滤波处理,指定了输出图像的深度cv2.CV_64F。接下来,我们将结果取绝对值,转换为8位无符号整数类型(np.uint8)。最后,我们使用cv2.imshow()函数显示原始图像和经过Laplacian滤波处理后的图像。

运行代码后,你将看到显示了原始灰度图像和经过Laplacian滤波处理后的图像,边缘或颜色变化区域会变得更加明显。

你可能感兴趣的:(深度学习,opencv,python,计算机视觉)