0%

OpenCV基本函数

自学过程中顺便整理记录一下

简介

OpenCV的设计目标是提供一套简单而且可扩展的计算机视觉库,应用领域包括人机互动、图像识别、机器视觉、运动分析等。

在Python环境下,使用pip install opencv-python安装OpenCV库,使用import cv2进行调用。

基本函数

文件操作

1
2
3
4
5
6
7
8
9
10
# 加载图像
img = cv2.imread('image.jpg')

# 显示图像
cv2.imshow('image',img)
# 等待用户按键,delay设置为0将无限期等待
cv2.waitKey(delay)

# 保存图像到指定路径
cv2.imwrite('image.jpg',img)

图像属性查看

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 获取像素
# 灰度图通过行列坐标获取
px = img[y, x]
# 彩图加入RGB通道索引(分别为0/1/2)
px = img[y, x, c]

# 修改像素
img[y, x] = [y_new, x_new]

# 获取图像属性
# 图像大小:行数、列数、通道数
print(img.shape)
# 像素总数
print(img.size)
# 数据类型
print(img.dtype)

# 设置感兴趣的区域(起始、结束坐标)
roi = img[y1:y2, x1:x2]

# 拆分颜色通道
b,g,r = cv2.split(img)
# 合并颜色通道
img = cv2.merge([b,g,r])

图像操作

基本编辑

1
2
3
4
5
6
7
8
9
10
# 图像缩放
resize_img = cv2.resize(img, (width, height))

# 获取旋转矩阵
rotate_matrix = cv2.getRotationMatrix2D(center, angle, scale)
# 图像旋转
rotate_img = cv2.warpAffine(img, rotate_matrix, (width, height))

# 图像翻转(1表示水平翻转,0表示垂直翻转,-1表示水平和垂直同时翻转)
flip_img = cv2.flip(img, 1)

图像预处理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 颜色空间转换(将图像从一种颜色表示方式转换为另一种)
# 例:RGB图像转换为灰度图
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 阈值处理(将图像中的像素按阈值分为两个区域)
# 例:将灰度图按阈值127,最大值255进行二进制阈值化,大于阈值变为最大值,否则变为0
ret, binary_img = cv2.threshold(gray_img, 127, 255, cv2.THRESH_BINARY)

# 滤波操作:用于平滑、去噪或增强图像特征
# 高斯滤波(高斯核大小、标准差)
gaussblur_img = cv2.GaussianBlur(img, (5, 5), 0)
# 中值滤波(滤波器大小)
medianblur_img = cv2.medianBlur(img, 5)
# 均值滤波(滤波器大小)
meanblur_img = cv2.blur(img, (5, 5))

图像识别检测

1
2
3
4
5
6
7
8
# Canny边缘检测
edge = cv2.Canny(img, threshold1, threshold2)

# 霍夫变换检测直线
line = cv2.HoughLines(edge, rho, theta, threshold)

# 霍夫变换检测圆
circ = cv2.HoughCircles(img, cv2.HOUGH_GRADIENT, dp, minDist, param1, param2, minR, maxR)