当前位置: 首页 > news >正文

OpenCV学习笔记:图像处理基础

目录图像平滑处理高斯滤波中值滤波图像形态学操作腐蚀膨胀开运算闭运算颜色空间转换图像绘制图像预处理颜色空间转换图像绘制图像预处理图像平滑处理高斯滤波高斯滤波通过加权平均像素值来消除高斯噪声权重由高斯函数计算距离中心越近的像素权重越高。适用于消除正态分布的噪声。import cv2 import numpy as np # 读取图像 img cv2.imread(image.jpg) # 高斯滤波核大小为(5,5)标准差为0 blur cv2.GaussianBlur(img, (5,5), 0) cv2.imshow(Gaussian Blur, blur) cv2.waitKey(0)中值滤波中值滤波用邻域像素的中值替代中心像素值对椒盐噪声黑白噪点效果显著但可能丢失细节。# 中值滤波核大小为5 median cv2.medianBlur(img, 5) cv2.imshow(Median Blur, median) cv2.waitKey(0)图像形态学操作腐蚀腐蚀操作通过滑动结构元素如矩形核消除边界像素使物体缩小。常用于去除小噪点或分离粘连物体。# 定义3x3矩形核 kernel np.ones((3,3), np.uint8) # 腐蚀操作 erosion cv2.erode(img, kernel, iterations1) cv2.imshow(Erosion, erosion) cv2.waitKey(0)膨胀膨胀操作与腐蚀相反扩展物体边界填充空洞或连接断裂部分。# 膨胀操作 dilation cv2.dilate(img, kernel, iterations1) cv2.imshow(Dilation, dilation) cv2.waitKey(0)开运算先腐蚀后膨胀可平滑物体轮廓并消除小噪点保持原物体大小近似不变。# 开运算 opening cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel) cv2.imshow(Opening, opening) cv2.waitKey(0)闭运算先膨胀后腐蚀用于填充物体内部小孔或闭合细小裂缝。# 闭运算 closing cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel) cv2.imshow(Closing, closing) cv2.waitKey(0)注意事项滤波核大小需为奇数如(3,3)、(5,5)。形态学操作的iterations参数控制处理强度过高可能导致过度变形。实际应用中需根据噪声类型和图像特征调整参数。颜色空间转换颜色空间转换是图像处理的基础常用函数是cv2.cvtColor()。该函数将图像从一个颜色空间转换到另一个例如从BGROpenCV默认格式到RGB、灰度或HSV。常见转换标志包括COLOR_BGR2RGB、COLOR_BGR2GRAY和COLOR_BGR2HSV。转换后图像数据会以NumPy数组形式存储。示例代码将BGR图像转换为RGB和灰度图像。import cv2 # 加载图像假设图像是BGR格式 image cv2.imread(image.jpg) # 替换为实际图像路径 # 转换为RGB rgb_image cv2.cvtColor(image, cv2.COLOR_BGR2RGB) # 转换为灰度 gray_image cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # 显示结果可选 cv2.imshow(RGB Image, rgb_image) cv2.imshow(Gray Image, gray_image) cv2.waitKey(0) cv2.destroyAllWindows()图像绘制OpenCV提供了多种绘制函数来添加几何形状或文本到图像上。常用函数包括cv2.rectangle()绘制矩形、cv2.putText()添加文本、cv2.circle()绘制圆形和cv2.line()绘制直线。这些函数直接在图像数组上操作参数包括坐标、颜色BGR格式、线宽等。示例代码在图像上绘制矩形、文本、圆形和直线。import cv2 import numpy as np # 创建一个空白图像512x512像素BGR格式 image np.zeros((512, 512, 3), dtypenp.uint8) # 绘制矩形左上角(100,100)右下角(400,400)蓝色线宽2 cv2.rectangle(image, (100, 100), (400, 400), (255, 0, 0), 2) # 添加文本位置(200,50)字体、大小、颜色、线宽 cv2.putText(image, Hello OpenCV, (200, 50), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2) # 绘制圆形中心点(256,256)半径100红色填充 cv2.circle(image, (256, 256), 100, (0, 0, 255), -1) # 绘制直线起点(50,50)终点(450,450)黄色线宽3 cv2.line(image, (50, 50), (450, 450), (0, 255, 255), 3) # 显示结果 cv2.imshow(Drawn Image, image) cv2.waitKey(0) cv2.destroyAllWindows()图像预处理图像预处理包括归一化和转换为张量常用于机器学习模型输入。归一化将像素值从0-255缩放到0-1或-1到1范围以提高训练稳定性。转换为张量涉及将NumPy数组转为PyTorch Tensor并调整维度顺序例如从HWC高度-宽度-通道到CHW通道-高度-宽度。归一化公式像素值除以255.0得到$[0, 1]$范围或使用$ \frac{x}{127.5} - 1 $得到$[-1, 1]$范围。 转换为张量使用torch.from_numpy()并应用permute()调整维度。示例代码归一化图像并转换为PyTorch张量。import cv2 import numpy as np import torch # 加载图像并转换为RGB确保预处理前图像格式一致 image cv2.imread(image.jpg) image cv2.cvtColor(image, cv2.COLOR_BGR2RGB) # 归一化缩放到[0,1]范围 normalized_image image.astype(np.float32) / 255.0 # 使用浮点类型 # 转换为PyTorch张量先转为Tensor再调整维度顺序 tensor_image torch.from_numpy(normalized_image).permute(2, 0, 1) # 从HWC到CHW # 输出张量形状验证维度应为[channels, height, width] print(tensor_image.shape) # 例如torch.Size([3, 480, 640])这些操作覆盖了OpenCV的核心图像处理功能代码可直接运行。根据实际需求调整参数如归一化范围或绘制坐标。颜色空间转换颜色空间转换是图像处理的基础常用函数是cv2.cvtColor()。该函数将图像从一个颜色空间转换到另一个例如从BGROpenCV默认格式到RGB、灰度或HSV。常见转换标志包括COLOR_BGR2RGB、COLOR_BGR2GRAY和COLOR_BGR2HSV。转换后图像数据会以NumPy数组形式存储。示例代码将BGR图像转换为RGB和灰度图像。import cv2 # 加载图像假设图像是BGR格式 image cv2.imread(image.jpg) # 替换为实际图像路径 # 转换为RGB rgb_image cv2.cvtColor(image, cv2.COLOR_BGR2RGB) # 转换为灰度 gray_image cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # 显示结果可选 cv2.imshow(RGB Image, rgb_image) cv2.imshow(Gray Image, gray_image) cv2.waitKey(0) cv2.destroyAllWindows()图像绘制OpenCV提供了多种绘制函数来添加几何形状或文本到图像上。常用函数包括cv2.rectangle()绘制矩形、cv2.putText()添加文本、cv2.circle()绘制圆形和cv2.line()绘制直线。这些函数直接在图像数组上操作参数包括坐标、颜色BGR格式、线宽等。示例代码在图像上绘制矩形、文本、圆形和直线。import cv2 import numpy as np # 创建一个空白图像512x512像素BGR格式 image np.zeros((512, 512, 3), dtypenp.uint8) # 绘制矩形左上角(100,100)右下角(400,400)蓝色线宽2 cv2.rectangle(image, (100, 100), (400, 400), (255, 0, 0), 2) # 添加文本位置(200,50)字体、大小、颜色、线宽 cv2.putText(image, Hello OpenCV, (200, 50), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2) # 绘制圆形中心点(256,256)半径100红色填充 cv2.circle(image, (256, 256), 100, (0, 0, 255), -1) # 绘制直线起点(50,50)终点(450,450)黄色线宽3 cv2.line(image, (50, 50), (450, 450), (0, 255, 255), 3) # 显示结果 cv2.imshow(Drawn Image, image) cv2.waitKey(0) cv2.destroyAllWindows()图像预处理图像预处理包括归一化和转换为张量常用于机器学习模型输入。归一化将像素值从0-255缩放到0-1或-1到1范围以提高训练稳定性。转换为张量涉及将NumPy数组转为PyTorch Tensor并调整维度顺序例如从HWC高度-宽度-通道到CHW通道-高度-宽度。归一化公式像素值除以255.0得到[0, 1]范围得到[-1, 1]范围。 转换为张量使用torch.from_numpy()并应用permute()调整维度。示例代码归一化图像并转换为PyTorch张量。import cv2 import numpy as np import torch # 加载图像并转换为RGB确保预处理前图像格式一致 image cv2.imread(image.jpg) image cv2.cvtColor(image, cv2.COLOR_BGR2RGB) # 归一化缩放到[0,1]范围 normalized_image image.astype(np.float32) / 255.0 # 使用浮点类型 # 转换为PyTorch张量先转为Tensor再调整维度顺序 tensor_image torch.from_numpy(normalized_image).permute(2, 0, 1) # 从HWC到CHW # 输出张量形状验证维度应为[channels, height, width] print(tensor_image.shape) # 例如torch.Size([3, 480, 640])这些操作覆盖了OpenCV的核心图像处理功能代码可直接运行。根据实际需求调整参数如归一化范围或绘制坐标。
http://www.gsyq.cn/news/1375483.html

相关文章:

  • 你以为线程池就是“丢进去跑完就行”?那为啥你的服务越跑越慢呢?
  • 包头市2026年最新黄金回收TOP5排行榜:黄金回收白银回收铂金回收彩金回收门店诚信优选+联系方式推荐 - 大熊猫898989
  • 机器学习与RGDOS方法高效模拟分子晶体偏振拉曼光谱
  • Atomic Layout测试策略:单元测试与集成测试最佳实践
  • 如何为sync-settings开发自定义存储位置插件:完整开发者指南
  • Docbox实战案例分享:Mapbox、Mapillary等知名公司的使用经验
  • Android逆向实战:dex2jar原理与高级混淆破解指南
  • 衡水市黄金回收白银回收铂金回收彩金回收门店优选+2026年最新黄金回收TOP5排行榜及联系方式推荐 - 盛世金银回收
  • 量子软件Bug分类:挑战、框架与实践
  • 深度解析 AutoGen:微软开源框架如何让智能体学会“对话”
  • Selenium反爬实战:从入门陷阱到生产级稳定性加固
  • 从一次内网访问失败说起:手把手教你排查麒麟KYLINOS的DNS配置(附systemd-resolved详解)
  • 从0到1构建奶牛行为智能监控系统 (八) 前端页面构建(包含代码开源地址)
  • 量子误差校正的变分优化方法与应用
  • 实验二 基于 VMware Workstation 的虚拟机平台搭建、客户机安装与虚拟网络模式验证
  • ARM SVE指令集:UDOT与UMAX指令深度解析与优化实践
  • 2025_NIPS_Parts of Speech–Grounded Subspaces in Vision-Language Models
  • Java IO:流、File文件、字节流、字符流、序列化与反序列化
  • IDEA 2026.2 EAP 2 新特性:Live Templates 升级
  • 别再只会用`echo mem > /sys/power/state`了:手把手带你理解Linux内核的三种休眠模式
  • 神经模拟器超越训练数据:从误差纠正到高效科学计算
  • 山东大学创新实训——诈骗克星个人博客六
  • 座机号码认证后能显示哪些信息?展示企业品牌名称+logo
  • 硬件工程师,每天5分钟(8)——为什么 DDR5 最怕电容摆错位置?差1厘米,效果可能差10倍
  • 云曦期中复现wp
  • Rancher 安装与配置文档
  • 打破边界:AI如何拓展焦点小组和深度访谈的深度与广度?
  • 网络总共分几层?它们之间有什么关系?
  • 林影通OCR识别管理平台 —— 林业图片经纬度智能识别,一键提取经纬度!
  • search_reports 减少AI里Tokens 消耗