初识 OpenCV: 图像处理入门

OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库,它包含了大量的图像处理和计算机视觉算法。OpenCV 支持多种编程语言,包括 Python、C++ 等。在本篇博文中,我们将通过一些简单的示例来探索 OpenCV 中的基本功能,包括提取 RGB 颜色通道、图像间的数学运算以及边界填充等操作。

开始前的准备

首先准备一张图片,在这里我准备的是一张美女和一个动漫人物

img.png zl.png

提取 RGB 颜色通道

在 OpenCV 中,图像通常是作为三维数组存储的,其中每个像素点由三个通道组成:红(Red)、绿(Green)和蓝(Blue)。我们可以轻松地从图像中提取出这些颜色通道。

python 复制代码
import cv2

# 读取图像
image = cv2.imread('img.png')

# 提取颜色通道
blue_channel = image[:, :, 0]  # 蓝色通道
green_channel = image[:, :, 1]  # 绿色通道
red_channel = image[:, :, 2]  # 红色通道

# 或者使用 cv2.split() 分离颜色通道
b, g, r = cv2.split(image)

# 显示蓝色通道
cv2.imshow('Blue Channel', blue_channel)
cv2.waitKey(0)
cv2.destroyAllWindows()
输出结果:

图像间的数学运算

OpenCV 提供了多种方式来进行图像间的数学运算,例如简单的加法和加权运算。

python 复制代码
# 读取两个图像
image_a = cv2.imread('img.png')
image_b = cv2.imread('zl.png')

# 调整尺寸
image_a = cv2.resize(image_a, (400, 400))
image_b = cv2.resize(image_b, (400, 400))

# 直接加法
combined_image = cv2.add(image_a, image_b)
cv2.imshow('Combined Image (Direct Add)', combined_image)
cv2.waitKey(0)

# 加权运算
weighted_image = cv2.addWeighted(image_a, 0.2, image_b, 0.8, 10)
cv2.imshow('Combined Image (Weighted Add)', weighted_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
输出结果:
边界填充

有时我们需要为图像添加边界,以适应不同的应用场景,例如图像融合或调整图像尺寸。OpenCV 提供了 copyMakeBorder 函数来实现这一目的。

python 复制代码
import cv2

# 读取图像
image = cv2.imread('img.png')

# 设置边界宽度
top, bottom, left, right = 50, 50, 50, 50

# 常数填充
constant_border = cv2.copyMakeBorder(image, top, bottom, left, right, cv2.BORDER_CONSTANT, value=[0, 0, 0])
cv2.imshow('Constant Border', constant_border)
cv2.waitKey(0)

# 镜像填充
reflect_border = cv2.copyMakeBorder(image, top, bottom, left, right, cv2.BORDER_REFLECT)
cv2.imshow('Reflect Border', reflect_border)
cv2.waitKey(0)

# 镜像填充 101
reflect101_border = cv2.copyMakeBorder(image, top, bottom, left, right, cv2.BORDER_REFLECT_101)
cv2.imshow('Reflect101 Border', reflect101_border)
cv2.waitKey(0)

# 复制边缘
replicate_border = cv2.copyMakeBorder(image, top, bottom, left, right, cv2.BORDER_REPLICATE)
cv2.imshow('Replicate Border', replicate_border)
cv2.waitKey(0)

# 循环填充
wrap_border = cv2.copyMakeBorder(image, top, bottom, left, right, cv2.BORDER_WRAP)
cv2.imshow('Wrap Border', wrap_border)
cv2.waitKey(0)
cv2.destroyAllWindows()
输出结果 :

结论

通过上述示例,我们了解了 OpenCV 在图像处理方面的一些基本功能。从提取颜色通道到进行图像间的数学运算,再到为图像添加边界,这些操作都非常直观且易于实现。OpenCV 是一个非常强大的工具,适合用于各种图像处理和计算机视觉任务。随着对 OpenCV 更深入的学习,你可以尝试更多高级的功能和技术。

相关推荐
OCR_wintone4211 分钟前
易泊车牌识别相机,助力智慧工地建设
人工智能·数码相机·ocr
王哈哈^_^22 分钟前
【数据集】【YOLO】【VOC】目标检测数据集,查找数据集,yolo目标检测算法详细实战训练步骤!
人工智能·深度学习·算法·yolo·目标检测·计算机视觉·pyqt
一者仁心28 分钟前
【AI技术】PaddleSpeech
人工智能
是瑶瑶子啦37 分钟前
【深度学习】论文笔记:空间变换网络(Spatial Transformer Networks)
论文阅读·人工智能·深度学习·视觉检测·空间变换
EasyCVR40 分钟前
萤石设备视频接入平台EasyCVR多品牌摄像机视频平台海康ehome平台(ISUP)接入EasyCVR不在线如何排查?
运维·服务器·网络·人工智能·ffmpeg·音视频
柳鲲鹏1 小时前
OpenCV视频防抖源码及编译脚本
人工智能·opencv·计算机视觉
西柚小萌新1 小时前
8.机器学习--决策树
人工智能·决策树·机器学习
向阳12181 小时前
Bert快速入门
人工智能·python·自然语言处理·bert
jndingxin1 小时前
OpenCV视觉分析之目标跟踪(8)目标跟踪函数CamShift()使用
人工智能·opencv·目标跟踪
杰说新技术1 小时前
Meta AI最新推出的长视频语言理解多模态模型LongVU分享
人工智能·aigc