哪一些网站使用vue做的,高端响应式网站建设,铁西网络建设,ui设计基础知识① 二值化函数
功能#xff1a;将图像转换为二值图像#xff08;黑白图像#xff09;#xff0c;将像素值分为两种类别#xff1a;前景#xff08;白#xff09;和背景#xff08;黑#xff09;。函数#xff1a;cv2.threshold()参数#xff1a; src#xff1a;输…
① 二值化函数
功能将图像转换为二值图像黑白图像将像素值分为两种类别前景白和背景黑。函数cv2.threshold()参数 src输入图像通常为灰度图像。thresh阈值值用于将像素分割为前景和背景。maxval满足条件的像素值赋值为此值通常为255。type阈值类型例如 cv2.THRESH_BINARY大于阈值的像素赋值为maxval否则为0。cv2.THRESH_BINARY_INV反向二值化。cv2.THRESH_TRUNC大于阈值的像素赋值为阈值其余保持不变。cv2.THRESH_TOZERO小于阈值的像素赋值为0。cv2.THRESH_TOZERO_INV大于阈值的像素赋值为0。返回值 retval实际使用的阈值当选择 Otsu 或自适应阈值时有意义。dst二值化后的图像。应用目标检测、边缘检测、文档处理等。代码 import cv2# 读取图像文件
img cv2.imread(./lena.png) # 从当前目录读取名为 lena.png 的图像文件
cv2.imshow(flower, img) # 显示原始图像窗口标题为 flower# 将彩色图像转换为灰度图像
img_gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 使用 OpenCV 的颜色转换函数将图像从 BGR 转为灰度
cv2.imshow(gray, img_gray) # 显示灰度图像窗口标题为 gray# 设置二值化的阈值
thresh 120 # 阈值设为 120低于该值的像素归为 0高于该值的像素归为 255# 手动实现基于阈值的二值化
img_binary img_gray # 将灰度图赋值给新的变量 img_binary
for i in range(img_gray.shape[0]): # 遍历图像的每一行for j in range(img_gray.shape[1]): # 遍历图像的每一列if img_binary[i][j] thresh: # 如果像素值小于等于阈值pass # 此处原本应该将像素值设为 0但被注释掉了什么都不做# img_binary[i][j] 0 # 手动将像素值设置为 0else: # 如果像素值大于阈值img_binary[i][j] 255 # 手动将像素值设置为 255白色# 使用 OpenCV 自带的阈值函数实现二值化此部分代码被注释掉
# ret, img_binary cv2.threshold(img_gray, 200, 255, cv2.THRESH_BINARY cv2.THRESH_OTSU)
# 说明
# ret实际使用的阈值当使用 Otsu 方法时自动计算得到。
# img_binary二值化后的图像。
# cv2.THRESH_BINARY普通二值化像素值高于阈值设为最大值255否则为 0。
# cv2.THRESH_OTSU自动计算全局最佳阈值。# 显示二值化后的图像
cv2.imshow(threshold , img_binary) # 显示手动二值化后的图像窗口标题为 threshold# 等待用户按键随后关闭窗口
cv2.waitKey(0) # 等待用户按下任意键不限制时间② 自适应二值化函数
功能对光照不均匀的图像进行二值化使用局部区域的统计信息来计算阈值。函数cv2.adaptiveThreshold()参数 src输入图像必须是灰度图。maxValue满足条件的像素值赋值为此值通常为255。adaptiveMethod自适应阈值计算方法 cv2.ADAPTIVE_THRESH_MEAN_C取邻域均值作为阈值。cv2.ADAPTIVE_THRESH_GAUSSIAN_C取邻域高斯加权均值作为阈值。thresholdType阈值类型通常为 cv2.THRESH_BINARY 或 cv2.THRESH_BINARY_INV。blockSize邻域大小必须为奇数。C常量用于调整阈值结果。返回值 dst自适应二值化后的图像。应用场景文字检测、身份证/票据识别、医学影像处理。代码 import cv2 # 导入 OpenCV 库用于图像处理# 读取图像
image cv2.imread(./lena.png) # 从当前目录读取名为 lena.png 的图像文件彩色图像
# cv2.imshow(flower, image) # 如果需要显示原图可以取消注释此行窗口标题为 flower# 将彩色图像转换为灰度图像
img_gray cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # 使用 OpenCV 的颜色转换函数将 BGR 彩色图像转为灰度图像
cv2.imshow(gray, img_gray) # 显示灰度图像窗口标题为 gray# 使用 Otsu 方法进行全局阈值化
ret, img_binary cv2.threshold(img_gray, # 输入图像必须是灰度图像200, # 手动设置的初始阈值Otsu 会自动调整此值会被忽略255, # 满足条件的像素值设置为 255cv2.THRESH_BINARY cv2.THRESH_OTSU # 二值化模式为 Otsu 和普通二值化的组合
)
# cv2.imshow(threshold, img_binary) # 如果需要显示 Otsu 二值化结果可以取消注释此行窗口标题为 threshold# 使用自适应二值化方法
image_np_adaptive cv2.adaptiveThreshold(img_gray, # 输入图像必须是灰度图像255, # 满足条件的像素值设置为 255cv2.ADAPTIVE_THRESH_GAUSSIAN_C, # 使用高斯加权的邻域均值来计算局部阈值cv2.THRESH_BINARY, # 二值化模式为普通二值化7, # 邻域大小blockSize必须为奇数例如 7 表示 7×7 的窗口5 # 常量 C最终阈值为计算出的局部阈值减去 C
)
cv2.imshow(image_np_adaptive, image_np_adaptive) # 显示自适应二值化后的图像窗口标题为 image_np_adaptive# 等待用户按键随后关闭所有窗口
cv2.waitKey(0) # 等待用户按下任意键不限制时间③ 腐蚀函数
功能减少图像中的白色区域前景去除小的噪声点或断开小的连接。函数cv2.erode()参数 src输入图像二值图像或灰度图像。kernel结构元素形状和大小由 cv2.getStructuringElement() 定义。iterations腐蚀操作的次数。返回值 dst腐蚀后的图像。应用去除噪声、边缘提取、分离连通物体等。代码 import cv2 # 导入 OpenCV 库用于图像处理# 读取图像
image_binary cv2.imread(./morph.png) # 从当前目录读取名为 morph.png 的图像文件
# 注意这里假设图像是二值图像黑白图像如果图像是彩色或灰度图需要先进行预处理。# 创建结构元素内核
image_1 cv2.getStructuringElement(cv2.MORPH_ELLIPSE, # 内核形状为椭圆(10, 10) # 内核大小为 10×10 像素
)
# 说明
# cv2.getStructuringElement() 用于创建形态学操作的结构元素内核。
# 参数 cv2.MORPH_ELLIPSE 表示使用椭圆形内核。其他可选形状包括
# - cv2.MORPH_RECT矩形
# - cv2.MORPH_CROSS交叉形
# 内核的大小对形态学操作的结果影响很大较大的内核会产生更显著的效果。# 使用腐蚀操作处理图像
image_erode cv2.erode(image_binary, # 输入图像通常为二值图像image_1 # 结构元素内核
)
# 说明
# cv2.erode() 是 OpenCV 的腐蚀函数用于减少图像中前景白色区域的面积。
# 通过结构元素内核腐蚀操作会移除边缘上的白色像素。
# 对于 10×10 的椭圆内核腐蚀操作会缩小前景区域并去除小的噪声。# 显示腐蚀后的图像
cv2.imshow(image_erode, image_erode) # 显示腐蚀后的图像窗口标题为 image_erode# 显示原始图像
cv2.imshow(image_binary, image_binary) # 显示原始图像窗口标题为 image_binary# 等待用户按键后关闭窗口
cv2.waitKey(0) # 等待用户按下任意键④ 膨胀函数
功能增加图像中的白色区域前景填补断裂的区域或小孔。函数cv2.dilate()参数 src输入图像二值图像或灰度图像。kernel结构元素。iterations膨胀操作的次数。返回值 dst膨胀后的图像。应用增强物体区域、填充空隙、形态学处理等。代码 import cv2 # 导入 OpenCV 库用于图像处理# 读取图像
image_binary cv2.imread(./lena.png) # 从当前目录读取名为 lena.png 的图像文件彩色图像# 将彩色图像转换为灰度图像
image_gray cv2.cvtColor(image_binary, cv2.COLOR_BGR2GRAY) # 使用 OpenCV 的颜色转换函数将 BGR 图像转为灰度图像# 自适应二值化
image_np_adaptive cv2.adaptiveThreshold(image_gray, # 输入灰度图像255, # 满足条件的像素值设置为 255cv2.ADAPTIVE_THRESH_GAUSSIAN_C, # 使用高斯加权的邻域均值计算局部阈值cv2.THRESH_BINARY, # 二值化模式为普通二值化7, # 邻域大小blockSize必须是奇数这里为 7×7 的窗口5 # 常量 C用于调整阈值阈值 局部均值 - C
)
# 自适应二值化适用于光照不均匀的图像处理。参数 blockSize 和 C 会直接影响二值化结果。# 创建形态学操作的结构元素内核
kernal cv2.getStructuringElement(cv2.MORPH_ELLIPSE, # 内核形状为椭圆形(4, 4) # 内核大小为 4×4 像素
)
# 注意较小的内核会对图像做出细微的形态学改变较大的内核会显著改变图像形状。# 腐蚀操作
image_erode cv2.erode(image_np_adaptive, # 输入二值图像经过自适应二值化的图像kernal # 使用的内核
)
# cv2.erode() 会减少前景白色区域的面积移除边缘上的噪声点或小的白色区域。
# 腐蚀操作通常用于消除小噪声或分离相连的物体。# 膨胀操作
image_erode_dilate cv2.dilate(image_erode, # 输入图像已经腐蚀过的图像kernal # 使用的内核
)
# cv2.dilate() 会增加前景白色区域的面积填充空洞或连接断裂的部分。
# 腐蚀和膨胀结合使用可以实现开运算消除小噪声或闭运算填补小空洞。# 显示腐蚀后的图像
cv2.imshow(image_erode, image_erode) # 显示腐蚀处理后的图像窗口标题为 image_erode# 显示原始彩色图像
cv2.imshow(image_binary, image_binary) # 显示原始图像窗口标题为 image_binary# 显示腐蚀后再膨胀的图像
cv2.imshow(image_erode_dilate, image_erode_dilate) # 显示膨胀处理后的图像窗口标题为 image_erode_dilate# 等待用户按键后关闭窗口
cv2.waitKey(0) # 等待用户按下任意键窗口保持打开⑤ 仿射变换函数
功能对图像进行线性变换如旋转、缩放、平移等。函数cv2.warpAffine()参数 src输入图像。M2x3 的仿射变换矩阵通过 cv2.getAffineTransform() 生成。dsize输出图像的尺寸宽度和高度。flags插值方法如 cv2.INTER_LINEAR。borderMode 和 borderValue用于处理边界像素。返回值 dst变换后的图像。应用图像旋转、缩放、平移、视角调整等。代码 import numpy as np # 导入 NumPy用于数值计算此处未使用但是常见的图像处理工具库
import cv2 # 导入 OpenCV 库用于图像处理# 读取图像
image_binary cv2.imread(./lena.png) # 从当前目录读取名为 lena.png 的图像文件彩色图像# 将彩色图像转换为灰度图像
image_gray cv2.cvtColor(image_binary, cv2.COLOR_BGR2GRAY) # 使用 OpenCV 的颜色转换函数将 BGR 图像转为灰度图像# 自适应二值化
image_np_adaptive cv2.adaptiveThreshold(image_gray, # 输入灰度图像255, # 满足条件的像素值设置为 255cv2.ADAPTIVE_THRESH_GAUSSIAN_C, # 使用高斯加权的邻域均值计算局部阈值cv2.THRESH_BINARY, # 二值化模式为普通二值化7, # 邻域大小blockSize必须是奇数这里为 7×7 的窗口5 # 常量 C用于调整阈值阈值 局部均值 - C
)
# 自适应二值化适用于光照不均匀的图像处理。参数 blockSize 和 C 会直接影响二值化结果。# 创建形态学操作的结构元素内核
kernal cv2.getStructuringElement(cv2.MORPH_ELLIPSE, # 内核形状为椭圆形(4, 4) # 内核大小为 4×4 像素
)
# 注意较小的内核会对图像做出细微的形态学改变较大的内核会显著改变图像形状。# 腐蚀操作
image_erode cv2.erode(image_np_adaptive, # 输入二值图像经过自适应二值化的图像kernal # 使用的内核
)
# cv2.erode() 会减少前景白色区域的面积移除边缘上的噪声点或小的白色区域。
# 腐蚀操作通常用于消除小噪声或分离相连的物体。# 膨胀操作
image_erode_dilate cv2.dilate(image_erode, # 输入图像已经腐蚀过的图像kernal # 使用的内核
)
# cv2.dilate() 会增加前景白色区域的面积填充空洞或连接断裂的部分。
# 腐蚀和膨胀结合使用可以实现开运算消除小噪声或闭运算填补小空洞。# 显示腐蚀后的图像
cv2.imshow(image_erode, image_erode) # 显示腐蚀处理后的图像窗口标题为 image_erode# 显示原始彩色图像
cv2.imshow(image_binary, image_binary) # 显示原始图像窗口标题为 image_binary# 显示腐蚀后再膨胀的图像
cv2.imshow(image_erode_dilate, image_erode_dilate) # 显示膨胀处理后的图像窗口标题为 image_erode_dilate# 等待用户按键后关闭窗口
cv2.waitKey(0) # 等待用户按下任意键窗口保持打开⑥ 透视变换函数
功能对图像进行透视变换从一个视角映射到另一个视角校正倾斜图像或提取局部内容。函数cv2.warpPerspective()参数 src输入图像。M3x3 的透视变换矩阵通过 cv2.getPerspectiveTransform() 生成。dsize输出图像的尺寸。flags、borderMode 和 borderValue与仿射变换类似。返回值 dst透视变换后的图像。应用文档矫正、车牌识别、场景理解等。代码 import cv2 # 导入 OpenCV 库用于图像处理
import numpy as np # 导入 NumPy 库用于数组操作# 读取图像
image cv2.imread(./card.png) # 从当前目录中读取名为 card.png 的图像文件# 检查图像是否成功加载
if image is None: # 如果图像加载失败print(Error: Image not found. Please check the file path.) # 输出错误信息exit() # 终止程序# 定义原图中的四个点和目标点
point1 np.array([[200, 100], [700, 150], [140, 400], [650, 460]], dtypenp.float32)
# 说明
# point1 是原始图像中感兴趣区域ROI的四个顶点表示需要校正的区域。
# 每个点用 (x, y) 坐标表示。
# 例如(200, 100) 表示原图中左上角的一个点。point2 np.array([[0, 0], [image.shape[1], 0], [0, image.shape[0]], [image.shape[1], image.shape[0]]], dtypenp.float32)
# 说明
# point2 是透视变换后图像的目标点定义了变换后的矩形区域。
# (0, 0) 是左上角(image.shape[1], 0) 是右上角依次类推。
# image.shape[1] 表示图像宽度image.shape[0] 表示图像高度。# 获取透视变换矩阵
M cv2.getPerspectiveTransform(point1, point2)
# 说明
# cv2.getPerspectiveTransform() 函数计算透视变换矩阵。
# 参数
# - point1原始图像中的四个点。
# - point2目标图像中的四个点。
# 返回值
# - M 是一个 3x3 的透视变换矩阵。# 进行透视变换
image_s cv2.warpPerspective(image, M, (image.shape[1], image.shape[0]))
# 说明
# cv2.warpPerspective() 函数对图像应用透视变换。
# 参数
# - image输入图像。
# - M透视变换矩阵。
# - (image.shape[1], image.shape[0])输出图像的大小宽度、高度。
# 返回值
# - image_s 是经过透视变换后的图像。# 显示原图和矫正后的图像
cv2.imshow(Original Image, image) # 显示窗口标题为 Original Image 的原始图像
cv2.imshow(Corrected Image, image_s) # 显示窗口标题为 Corrected Image 的矫正后图像# 等待按键关闭窗口
cv2.waitKey(0) # 等待用户按下任意键后关闭所有窗口
cv2.destroyAllWindows() # 销毁所有窗口