目录图像平滑处理高斯滤波中值滤波图像形态学操作腐蚀膨胀开运算闭运算颜色空间转换图像绘制图像预处理颜色空间转换图像绘制图像预处理图像平滑处理高斯滤波高斯滤波通过加权平均像素值来消除高斯噪声权重由高斯函数计算距离中心越近的像素权重越高。适用于消除正态分布的噪声。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的核心图像处理功能代码可直接运行。根据实际需求调整参数如归一化范围或绘制坐标。
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的核心图像处理功能代码可直接运行。根据实际需求调整参数如归一化范围或绘制坐标。