opencv案例(opencv4经典案例实战教程)

简介

OpenCV(Open Source Computer Vision Library)是一个开源计算机视觉库,提供了广泛的图像和视频处理算法。它广泛用于各种应用中,包括物体检测、图像分割和面部识别。本篇文章将展示几个使用 OpenCV 实现的实际案例。## 物体检测### 行人检测OpenCV 提供了预训练的 Haar 级联分类器,可用于检测图像和视频中的行人。以下代码演示了如何使用 OpenCV Haar 级联分类器进行行人检测:```python import cv2# 加载 Haar 级联分类器 cascade = cv2.CascadeClassifier('haarcascade_fullbody.xml')# 读取图像 image = cv2.imread('image.jpg')# 将图像转换为灰度 gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# 检测行人 pedestrians = cascade.detectMultiScale(gray, 1.1, 4)# 绘制检测到的行人 for (x, y, w, h) in pedestrians:cv2.rectangle(image, (x, y), (x+w, y+h), (0, 255, 0), 2)# 显示检测结果 cv2.imshow('Detected Pedestrians', image) cv2.waitKey(0) ```## 图像分割### 图像分割(K-Means)OpenCV 中的 K-Means 算法可用于对图像进行分割。它将图像像素聚类为指定数量的簇,每个簇代表图像中的不同区域。以下代码展示了如何使用 OpenCV K-Means 算法进行图像分割:```python import cv2# 读取图像 image = cv2.imread('image.jpg')# 将图像转换为浮点型 image = np.float32(image)# 重新排列图像形状 image = image.reshape((-1, 3))# 定义 K-Means 聚类器 kmeans = cv2.kmeans(image, 5, None, (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 10, 1.0))# 获取聚类标签 labels = kmeans[1]# 将标签重新塑造成图像形状 segmented_image = labels.reshape((image.shape[0], image.shape[1]))# 显示分割结果 cv2.imshow('Segmented Image', segmented_image) cv2.waitKey(0) ```## 面部识别### EigenFacesEigenFaces 是 OpenCV 中用于面部识别的一种技术。它通过从训练图像中提取人脸特征来创建人脸空间。然后,可以将新图像投影到人脸空间,并使用欧氏距离或其他度量来识别面部。以下代码展示了如何使用 OpenCV EigenFaces 进行面部识别:```python import cv2 import numpy as np# 导入训练数据 faces = cv2.createEigenFaceRecognizer() faces.load('trained_faces.yml')# 读取未知图像 unknown_image = cv2.imread('unknown_face.jpg')# 转换图像为灰度 gray = cv2.cvtColor(unknown_image, cv2.COLOR_BGR2GRAY)# 检测图像中的人脸 faces_coordinates = faces.detectMultiScale(gray, 1.1, 4)# 预测人脸身份 for (x, y, w, h) in faces_coordinates:label, confidence = faces.predict(gray[y:y+h, x:x+w])print('Predicted label: {}, Confidence: {:.2f}'.format(label, confidence))# 显示检测和预测结果 cv2.imshow('Detected and Predicted Face', unknown_image) cv2.waitKey(0) ```以上只是使用 OpenCV 的几个示例。它还提供了许多其他功能,例如运动跟踪、立体视觉和机器学习算法。

**简介**OpenCV(Open Source Computer Vision Library)是一个开源计算机视觉库,提供了广泛的图像和视频处理算法。它广泛用于各种应用中,包括物体检测、图像分割和面部识别。本篇文章将展示几个使用 OpenCV 实现的实际案例。

物体检测

行人检测OpenCV 提供了预训练的 Haar 级联分类器,可用于检测图像和视频中的行人。以下代码演示了如何使用 OpenCV Haar 级联分类器进行行人检测:```python import cv2

加载 Haar 级联分类器 cascade = cv2.CascadeClassifier('haarcascade_fullbody.xml')

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

将图像转换为灰度 gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

检测行人 pedestrians = cascade.detectMultiScale(gray, 1.1, 4)

绘制检测到的行人 for (x, y, w, h) in pedestrians:cv2.rectangle(image, (x, y), (x+w, y+h), (0, 255, 0), 2)

显示检测结果 cv2.imshow('Detected Pedestrians', image) cv2.waitKey(0) ```

图像分割

图像分割(K-Means)OpenCV 中的 K-Means 算法可用于对图像进行分割。它将图像像素聚类为指定数量的簇,每个簇代表图像中的不同区域。以下代码展示了如何使用 OpenCV K-Means 算法进行图像分割:```python import cv2

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

将图像转换为浮点型 image = np.float32(image)

重新排列图像形状 image = image.reshape((-1, 3))

定义 K-Means 聚类器 kmeans = cv2.kmeans(image, 5, None, (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 10, 1.0))

获取聚类标签 labels = kmeans[1]

将标签重新塑造成图像形状 segmented_image = labels.reshape((image.shape[0], image.shape[1]))

显示分割结果 cv2.imshow('Segmented Image', segmented_image) cv2.waitKey(0) ```

面部识别

EigenFacesEigenFaces 是 OpenCV 中用于面部识别的一种技术。它通过从训练图像中提取人脸特征来创建人脸空间。然后,可以将新图像投影到人脸空间,并使用欧氏距离或其他度量来识别面部。以下代码展示了如何使用 OpenCV EigenFaces 进行面部识别:```python import cv2 import numpy as np

导入训练数据 faces = cv2.createEigenFaceRecognizer() faces.load('trained_faces.yml')

读取未知图像 unknown_image = cv2.imread('unknown_face.jpg')

转换图像为灰度 gray = cv2.cvtColor(unknown_image, cv2.COLOR_BGR2GRAY)

检测图像中的人脸 faces_coordinates = faces.detectMultiScale(gray, 1.1, 4)

预测人脸身份 for (x, y, w, h) in faces_coordinates:label, confidence = faces.predict(gray[y:y+h, x:x+w])print('Predicted label: {}, Confidence: {:.2f}'.format(label, confidence))

显示检测和预测结果 cv2.imshow('Detected and Predicted Face', unknown_image) cv2.waitKey(0) ```以上只是使用 OpenCV 的几个示例。它还提供了许多其他功能,例如运动跟踪、立体视觉和机器学习算法。

标签列表