返回
不负初心,零基础快速入门OpenCV(二) - 基础功能
人工智能
2023-09-17 21:04:58
OpenCV基础功能
图像转灰度
图像转灰度是将图像中的彩色信息转换为灰度信息,这样可以减少图像的复杂度,并简化后续的处理。在OpenCV中,可以使用cvtColor()函数将图像转为灰度。
import cv2
# 读入图像
image = cv2.imread('image.jpg')
# 将图像转为灰度
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 显示灰度图像
cv2.imshow('Gray Image', gray_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
阈值处理
阈值处理是一种图像分割技术,它将图像中的像素分为两类:前景和背景。前景像素的强度值大于或等于阈值,而背景像素的强度值小于阈值。在OpenCV中,可以使用threshold()函数进行阈值处理。
import cv2
# 读入图像
image = cv2.imread('image.jpg')
# 将图像转为灰度
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 应用阈值处理
threshold, binary_image = cv2.threshold(gray_image, 127, 255, cv2.THRESH_BINARY)
# 显示二值图像
cv2.imshow('Binary Image', binary_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
轮廓检测
轮廓检测是一种提取图像中对象的边界的方法。在OpenCV中,可以使用findContours()函数进行轮廓检测。
import cv2
# 读入图像
image = cv2.imread('image.jpg')
# 将图像转为灰度
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 应用阈值处理
threshold, binary_image = cv2.threshold(gray_image, 127, 255, cv2.THRESH_BINARY)
# 检测轮廓
contours, hierarchy = cv2.findContours(binary_image, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 绘制轮廓
cv2.drawContours(image, contours, -1, (0, 255, 0), 2)
# 显示轮廓图像
cv2.imshow('Contour Image', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
边缘检测
边缘检测是一种检测图像中物体边缘的方法。在OpenCV中,可以使用Canny()函数进行边缘检测。
import cv2
# 读入图像
image = cv2.imread('image.jpg')
# 将图像转为灰度
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 应用边缘检测
edges = cv2.Canny(gray_image, 100, 200)
# 显示边缘图像
cv2.imshow('Edge Image', edges)
cv2.waitKey(0)
cv2.destroyAllWindows()
图像金字塔
图像金字塔是一种图像表示方法,它将图像分解为一系列分辨率逐渐减小的图像。在OpenCV中,可以使用pyrDown()函数和pyrUp()函数构建图像金字塔。
import cv2
# 读入图像
image = cv2.imread('image.jpg')
# 构建图像金字塔
pyramid = [image]
for i in range(1, 5):
image = cv2.pyrDown(image)
pyramid.append(image)
# 显示图像金字塔
for i in range(len(pyramid)):
cv2.imshow('Level ' + str(i), pyramid[i])
cv2.waitKey(0)
cv2.destroyAllWindows()
直方图
直方图是一种统计图,它显示了图像中每个像素值的分布情况。在OpenCV中,可以使用calcHist()函数计算直方图。
import cv2
import matplotlib.pyplot as plt
# 读入图像
image = cv2.imread('image.jpg')
# 计算直方图
hist = cv2.calcHist([image], [0], None, [256], [0, 256])
# 显示直方图
plt.plot(hist)
plt.show()