[opencv-python常用函数] cv2.threshold()

本文详细介绍了OpenCV中cv2.threshold()函数的使用方法,包括参数说明及常见阈值类型,如BINARY、BINARY_INV、TRUNC、TOZERO和TOZERO_INV。通过实例展示了如何对灰度图像进行阈值处理,实现图像的二值化。

cv2.threshold()函数
下面是官方文档中给的解释

Python: cv2.threshold(src, thresh, maxval, type[, dst]) → retval, dst
  • src:表示的是图片源
  • thresh:表示的是阈值(起始值)
  • maxval:表示的是最大值
  • type:表示的是这里划分的时候使用的是什么类型的算法,常用值为0(cv2.THRESH_BINARY)

在这里插入图片描述

例:

import cv2
import matplotlib.pyplot as plt

img = cv2.imread('C:\\Users\\mck\\image\\ll.jpg')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
ret,thresh1 = cv2.threshold(gray,127,255,cv2.THRESH_BINARY)#将灰度图gray中灰度值小于175的点置0,灰度值大于175的点置255
ret,thresh2 = cv2.threshold(gray,127,255,cv2.THRESH_BINARY_INV)#将灰度图gray中灰度值小于175的点置255,灰度值大于175的点置0
ret,thresh3 = cv2.threshold(gray,127,255,cv2.THRESH_TRUNC)
ret,thresh4 = cv2.threshold(gray,127,255,cv2.THRESH_TOZERO)
ret,thresh5 = cv2.threshold(gray,127,255,cv2.THRESH_TOZERO_INV)
titles = ['img','BINARY','BINARY_INV','TRUNC','TOZERO','TOZERO_INV']
images = [img,thresh1,thresh2,thresh3,thresh4,thresh5]
for i in range(6):
    plt.subplot(2,3,i+1),plt.imshow(images[i],'gray')
    plt.title(titles[i])
    plt.xticks([]),plt.yticks([])
plt.show()

效果:

在这里插入图片描述

### OpenCV-Python 常用函数及使用示例 #### 显示图像 `cv2.imshow()` 和 `cv2.waitKey()` 是用于显示图像和等待键盘事件的重要函数。前者通过指定窗口名称 (`winname`) 和要显示的图像矩阵 (`mat`) 来展示图像,后者则暂停程序执行直到接收到按键输入或经过一定时间间隔[^3]。 ```python import cv2 image = cv2.imread('example.jpg') # 加载图片文件 cv2.imshow('Image Window', image) # 创建名为 'Image Window' 的窗口并显示加载好的图片 cv2.waitKey(0) # 等待任意键按下继续运行下一行代码 cv2.destroyAllWindows() # 关闭所有创建出来的窗口 ``` #### 图像读取与保存 对于图像的操作通常始于读入一张静态图象,并可能结束于将处理后的结果存储下来。这可以通过调用 `cv2.imread()` 方法来完成读取操作;而写回磁盘则是由 `cv2.imwrite()` 负责实现。 ```python original_image = cv2.imread('input.png') # 对 original_image 进行各种变换... cv2.imwrite('output_modified.png', modified_image) ``` #### 边缘检测 Canny算法是一种多级边缘探测器,在噪声抑制方面表现出色。它能够有效地找到物体边界上的像素点集合。此过程涉及高斯滤波平滑化、梯度计算以及非极大值抑制等多个阶段。 ```python gray_img = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # 将彩色图像转换成灰度模式 blurred_gray_img = cv2.GaussianBlur(gray_img, (5, 5), 0) # 使用高斯模糊减少噪音影响 edges = cv2.Canny(blurred_gray_img, threshold1=50, threshold2=150) # 执行 Canny 边缘检测 ``` #### 形态学操作 形态学运算可以用来清理二值化的图像数据中的噪点或者填补某些区域内的孔洞等问题。常见的两种基本形式分别是膨胀(`dilation`)和腐蚀(`erosion`)。 ```python kernel = np.ones((5,5),np.uint8) # 腐蚀操作会移除对象周围的白色背景部分 eroded = cv2.erode(binary_image,kernel,iterations = 1) # 膨胀将会扩大前景目标物的颜色范围至相邻区域 dilated = cv2.dilate(eroded,kernel,iterations = 1) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

锡城筱凯

你的鼓励是我创造的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值