opencv,HSV自适应二值化
时间: 2023-06-30 14:21:38 浏览: 490
在 OpenCV 中实现 HSV 自适应二值化的步骤如下:
1. 将原始图像从 BGR 颜色空间转换到 HSV 颜色空间,使用 `cv2.cvtColor()` 函数实现:
```
img_hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
```
2. 根据图像的亮度和颜色特征进行二值化,使用 `cv2.inRange()` 函数实现。在这里,我们可以使用两个阈值来确定二值化的范围,分别是 `lower` 和 `upper`。这两个阈值的具体值需要根据实际情况进行调整。
```
lower = np.array([h_min, s_min, v_min])
upper = np.array([h_max, s_max, v_max])
mask = cv2.inRange(img_hsv, lower, upper)
```
3. 对二值化后的图像进行形态学操作,使用 `cv2.morphologyEx()` 函数实现。一般情况下,我们可以先对图像进行腐蚀操作,然后再进行膨胀操作,以去除噪音和填充空洞。
```
kernel = np.ones((5,5),np.uint8)
mask = cv2.erode(mask,kernel,iterations = 1)
mask = cv2.dilate(mask,kernel,iterations = 1)
```
4. 检测图像中的轮廓,使用 `cv2.findContours()` 函数实现。该函数会返回一个包含所有轮廓的数组,每个轮廓都是一个由点组成的数组。
```
contours, hierarchy = cv2.findContours(mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
```
需要注意的是,HSV 自适应二值化的具体实现方式可能因应用场景而异,需要根据实际情况进行调整。
阅读全文