OpenCV是一个开源的计算机视觉库,提供了许多图像处理和计算机视觉算法。以下是一些常用的OpenCV功能的详细示例:
读取和显示图像:
import cv2
# 读取图像
image = cv2.imread('image.jpg')
# 显示图像
cv2.imshow('Image', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
图像缩放和裁剪:
import cv2
# 读取图像
image = cv2.imread('image.jpg')
# 缩放图像
resized = cv2.resize(image, (400, 300))
# 裁剪图像
cropped = image[100:400, 200:500]
# 显示缩放和裁剪后的图像
cv2.imshow('Resized Image', resized)
cv2.imshow('Cropped Image', cropped)
cv2.waitKey(0)
cv2.destroyAllWindows()
图像滤波:
import cv2
# 读取图像
image = cv2.imread('image.jpg')
# 应用均值滤波
blurred = cv2.blur(image, (5, 5))
# 应用高斯滤波
gaussian_blurred = cv2.GaussianBlur(image, (5, 5), 0)
# 显示滤波后的图像
cv2.imshow('Blurred Image', blurred)
cv2.imshow('Gaussian Blurred Image', gaussian_blurred)
cv2.waitKey(0)
cv2.destroyAllWindows()
图像边缘检测:
import cv2
# 读取图像
image = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)
# 应用Canny边缘检测算法
edges = cv2.Canny(image, 100, 200)
# 显示边缘图像
cv2.imshow('Edges', edges)
cv2.waitKey(0)
cv2.destroyAllWindows()
物体识别和跟踪:
import cv2
# 加载预训练的物体识别模型
net = cv2.dnn.readNetFromCaffe('deploy.prototxt', 'model.caffemodel')
# 读取图像
image = cv2.imread('image.jpg')
# 构建一个blob对象
blob = cv2.dnn.blobFromImage(cv2.resize(image, (300, 300)), 1.0, (300, 300), (104.0, 177.0, 123.0))
# 将blob输入到模型中进行识别
net.setInput(blob)
detections = net.forward()
# 遍历识别结果并绘制边界框
for i in range(detections.shape[2]):
confidence = detections[0, 0, i, 2]
if confidence > 0.5:
box = detections[0, 0, i, 3:7] * np.array([image.shape[1], image.shape[0], image.shape[1], image.shape[0]])
(startX, startY, endX, endY) = box.astype("int")
cv2.rectangle(image, (startX, startY), (endX, endY), (0, 255, 0), 2)
# 显示识别结果
cv2.imshow("Output", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
这些示例展示了OpenCV库的一些常用功能,包括图像读取、缩放和裁剪、滤波、边缘检测以及物体识别和跟踪。OpenCV在计算机视觉和图像处理领域有着广泛的应用,提供了丰富的函数和算法来处理图像和视频数据。