人工智能-python-OpenCV 图像基础认知与运用-图像的预处理(1)

文章目录

  • [OpenCV 图像基础认知与运用](#OpenCV 图像基础认知与运用)
    • [1. 图像翻转与仿射变换](#1. 图像翻转与仿射变换)
    • [2. 图像缩放与边缘填充](#2. 图像缩放与边缘填充)
      • [2.1. 图像缩放](#2.1. 图像缩放)
      • [2.2. 边缘填充](#2.2. 边缘填充)
    • [3. 颜色空间转换与处理](#3. 颜色空间转换与处理)
    • [4. 图像加法与加权加法](#4. 图像加法与加权加法)
    • [5. 图像二值化处理](#5. 图像二值化处理)
    • [6. 总结](#6. 总结)

OpenCV 图像基础认知与运用

OpenCV 是一个开源的计算机视觉库,广泛应用于图像处理和计算机视觉领域。本文将详细介绍 OpenCV 中图像的基础认知与常见运用,包括图像的基本操作、仿射变换、颜色空间转换、图像加法、二值化处理等内容。了解这些基础知识将有助于你更好地掌握 OpenCV 及其应用。


1. 图像翻转与仿射变换

1.1. 图像翻转

在 OpenCV 中,图像翻转是指对图像进行镜像处理。翻转操作是基于图像中心进行的。

cv2.flip() 函数用于执行图像翻转。参数说明如下:

  • img:要翻转的图像。

  • flipcode:指定翻转类型:

    • 0:垂直翻转(上下翻转)。
    • >0:水平翻转(左右翻转)。
    • <0:同时水平和垂直翻转。
示例代码:
python 复制代码
import cv2

img = cv2.imread("image.jpg")
flipped_img = cv2.flip(img, 1)  # 水平翻转
cv2.imshow("Flipped Image", flipped_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

1.2. 图像仿射变换

仿射变换通过线性变换改变图像的位置和形状。通过 OpenCV 提供的 cv2.warpAffine() 函数,可以执行图像的仿射变换。

仿射变换需要一个 2x3 的变换矩阵 M,该矩阵是根据给定的变换(如平移、旋转、缩放等)计算得到的。

示例代码:
python 复制代码
import numpy as np
import cv2

img = cv2.imread("image.jpg")
M = np.float32([[1, 0, 100], [0, 1, 50]])  # 平移矩阵
height, width = img.shape[:2]
shifted_img = cv2.warpAffine(img, M, (width, height))
cv2.imshow("Shifted Image", shifted_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

2. 图像缩放与边缘填充

2.1. 图像缩放

在 OpenCV 中,图像缩放是通过 cv2.resize() 函数实现的。通过缩放因子(如 sx, sy)可以改变图像的尺寸。

示例代码:
python 复制代码
import cv2

img = cv2.imread("image.jpg")
resized_img = cv2.resize(img, None, fx=0.5, fy=0.8)  # 缩放图像
cv2.imshow("Resized Image", resized_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

2.2. 边缘填充

图像变换后,空出来的区域可能会出现黑色空白,这时需要对空白区域进行边缘填充。边缘填充通常通过指定填充方法来处理。


3. 颜色空间转换与处理

3.1. RGB 转灰度

将彩色图像转换为灰度图像,通常是图像处理的第一步。OpenCV 提供了 cv2.cvtColor() 函数来进行颜色空间的转换。

示例代码:
python 复制代码
import cv2

img = cv2.imread("image.jpg")
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imshow("Gray Image", gray_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

3.2. RGB 转 HSV

HSV 颜色空间有时比 RGB 更适合进行颜色处理。HSV 空间中的 H 代表色调,S 代表饱和度,V 代表亮度。

示例代码:
python 复制代码
import cv2

img = cv2.imread("image.jpg")
hsv_img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
cv2.imshow("HSV Image", hsv_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

4. 图像加法与加权加法

4.1. 图像加法

OpenCV 提供了 cv2.add() 函数来对两幅图像进行加法操作。你也可以使用 numpy 来实现图像加法,但 OpenCV 会自动处理溢出。

示例代码:
python 复制代码
import cv2
import numpy as np

img1 = cv2.imread("image1.jpg")
img2 = cv2.imread("image2.jpg")
added_img = cv2.add(img1, img2)
cv2.imshow("Added Image", added_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

4.2. 加权加法

加权加法通过设定不同的权重,来对两幅图像进行加权合成。使用 cv2.addWeighted() 函数可以实现这一操作。

示例代码:
python 复制代码
import cv2

img1 = cv2.imread("image1.jpg")
img2 = cv2.imread("image2.jpg")
weighted_img = cv2.addWeighted(img1, 0.7, img2, 0.3, 0)
cv2.imshow("Weighted Added Image", weighted_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

5. 图像二值化处理

5.1. 阈值法

二值化是将图像中的像素值转换为只有两种颜色(通常是黑与白)的图像。在 OpenCV 中,cv2.threshold() 函数用于二值化图像。

示例代码:
python 复制代码
import cv2

img = cv2.imread("image.jpg", cv2.IMREAD_GRAYSCALE)
_, binary_img = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)
cv2.imshow("Binary Image", binary_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

5.2. 自适应阈值法

自适应阈值法根据图像的不同区域来设置阈值,适用于光照不均匀的图像。可以使用 cv2.adaptiveThreshold() 来进行自适应阈值操作。

示例代码:
python 复制代码
import cv2

img = cv2.imread("image.jpg", cv2.IMREAD_GRAYSCALE)
adaptive_binary_img = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 11, 2)
cv2.imshow("Adaptive Threshold Image", adaptive_binary_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

6. 总结

OpenCV 是一个功能强大的图像处理库,在图像处理、计算机视觉等领域有着广泛的应用。本文详细介绍了图像翻转、仿射变换、颜色空间转换、图像加法、二值化处理等基本操作。掌握这些基本操作是深入学习 OpenCV 以及进行更复杂图像处理的基础。

希望本文能够帮助你更好地理解 OpenCV 的图像操作,并为你在计算机视觉领域的学习和开发提供帮助。如果你有更多关于图像处理的需求,可以继续探索 OpenCV 提供的高级功能,如特征提取、物体检测、深度学习集成等。

相关推荐
CV实验室29 分钟前
TIP 2025 | 哈工大&哈佛等提出 TripleMixer:攻克雨雪雾干扰的3D点云去噪网络!
人工智能·计算机视觉·3d·论文
apocelipes30 分钟前
golang unique包和字符串内部化
java·python·性能优化·golang
Geoking.1 小时前
NumPy zeros() 函数详解
python·numpy
Full Stack Developme1 小时前
java.text 包详解
java·开发语言·python
余俊晖1 小时前
一套针对金融领域多模态问答的自适应多层级RAG框架-VeritasFi
人工智能·金融·rag
码农阿树2 小时前
视频解析转换耗时—OpenCV优化摸索路
人工智能·opencv·音视频
丁浩6662 小时前
Python机器学习---2.算法:逻辑回归
python·算法·机器学习
B站_计算机毕业设计之家3 小时前
计算机毕业设计:Python农业数据可视化分析系统 气象数据 农业生产 粮食数据 播种数据 爬虫 Django框架 天气数据 降水量(源码+文档)✅
大数据·爬虫·python·机器学习·信息可视化·课程设计·农业
Q_Q5110082853 小时前
python+uniapp基于微信小程序的旅游信息系统
spring boot·python·微信小程序·django·flask·uni-app·node.js
伏小白白白3 小时前
【论文精度-2】求解车辆路径问题的神经组合优化算法:综合展望(Yubin Xiao,2025)
人工智能·算法·机器学习