以下是使用OpenCV进行图像处理及使用深度学习框架(如TensorFlow或PyTorch)完成计算机视觉任务的学习笔记。
使用OpenCV进行图像处理OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库,提供了丰富的功能用于图像和视频的处理。
1. 安装OpenCV可以通过pip安装OpenCV:
- pip install opencv-python
复制代码
2. 基本使用a. 导入OpenCV库
b. 读取和显示图像- # 读取图像
- image = cv2.imread('image.jpg')
- # 显示图像
- cv2.imshow('Image', image)
- cv2.waitKey(0) # 等待按键
- cv2.destroyAllWindows() # 关闭图像窗口
复制代码
c. 保存图像- cv2.imwrite('output.jpg', image)
复制代码
3. 图像处理操作a. 图像转换(灰度、HSV)- # 转换为灰度图像
- gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
- # 转换为HSV
- hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
复制代码
b. 图像缩放和调整大小- # 缩放
- resized_image = cv2.resize(image, (100, 100)) # 新尺寸为100x100
- # 等比例缩放
- height, width = image.shape[:2]
- scale = 0.5
- resized_image = cv2.resize(image, (int(width * scale), int(height * scale)))
复制代码
c. 图像平滑(模糊)- # 均值模糊
- blurred_image = cv2.GaussianBlur(image, (5, 5), 0)
复制代码
d. 边缘检测- # 使用Canny边缘检测
- edges = cv2.Canny(image, 100, 200)
复制代码
e. 图像绘制# 在图像上绘制矩形- cv2.rectangle(image, (50, 50), (150, 150), (0, 255, 0), 2) # 矩形参数: (图像, 左上角, 右下角, 颜色, 线宽)
复制代码 # 在图像上绘制文本- cv2.putText(image, 'OpenCV Tutorial', (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 255), 2)
复制代码
4. 视频处理a. 打开视频- # 打开视频文件或摄像头
- cap = cv2.VideoCapture('video.mp4')
- while cap.isOpened():
- ret, frame = cap.read() # 读取每一帧
- if not ret:
- break
- # 在每一帧上进行处理
- gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
- cv2.imshow('Frame', gray_frame)
- if cv2.waitKey(1) & 0xFF == ord('q'):
- break
- cap.release()
- cv2.destroyAllWindows()
复制代码
使用深度学习框架完成计算机视觉任务1. 使用TensorFlow/Kerasa. 安装TensorFlow可以通过pip安装TensorFlow:
b. 构建CNN进行图像分类- import tensorflow as tf
- from tensorflow.keras import layers, models
- # 构建CNN模型
- model = models.Sequential([
- layers.Conv2D(32, (3, 3), activation='relu', input_shape=(64, 64, 3)),
- layers.MaxPooling2D((2, 2)),
- layers.Conv2D(64, (3, 3), activation='relu'),
- layers.MaxPooling2D((2, 2)),
- layers.Conv2D(64, (3, 3), activation='relu'),
- layers.Flatten(),
- layers.Dense(64, activation='relu'),
- layers.Dense(10, activation='softmax') # 10类
- ])
- model.compile(optimizer='adam',
- loss='sparse_categorical_crossentropy',
- metrics=['accuracy'])
复制代码
c. 数据预处理与训练- from tensorflow.keras.preprocessing.image import ImageDataGenerator
复制代码
# 数据增强
|