opencvc++筛选去掉小面积的轮廓
时间: 2023-10-13 20:05:00 浏览: 141
可以使用cv2.contourArea()函数计算轮廓的面积,然后通过比较面积值来筛选去掉小面积的轮廓。
下面是一个示例代码:
```
import cv2
# 读取图像,转换为灰度图像
img = cv2.imread('image.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 二值化处理
thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)[1]
# 查找轮廓
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 筛选去掉小面积的轮廓
min_area = 100 # 设置最小面积阈值
new_contours = []
for contour in contours:
area = cv2.contourArea(contour)
if area >= min_area:
new_contours.append(contour)
# 绘制筛选后的轮廓
cv2.drawContours(img, new_contours, -1, (0, 0, 255), 2)
# 显示图像
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在上面的代码中,我们设置了一个最小面积阈值为100,然后遍历所有的轮廓,计算它们的面积,如果面积大于等于最小面积阈值,则将其加入到新的轮廓列表中。最后,使用cv2.drawContours()函数绘制筛选后的轮廓。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)