opencv设定阈值去除非目标物代码
时间: 2023-07-24 08:18:20 浏览: 44
以下是使用OpenCV进行阈值分割并去除非目标物的示例代码:
```python
import cv2
# 读取图像
img = cv2.imread('image.jpg')
# 转换为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 设定阈值并进行二值化
thresh_val = 100 # 设定阈值
_, thresh = cv2.threshold(gray, thresh_val, 255, cv2.THRESH_BINARY)
# 进行形态学操作(开运算)去除噪点
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5, 5))
opening = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, kernel)
# 进行轮廓检测
contours, _ = cv2.findContours(opening, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 绘制轮廓并去除非目标物
mask = opening.copy()
for cnt in contours:
area = cv2.contourArea(cnt)
if area < 1000: # 设定面积阈值
cv2.drawContours(mask, [cnt], -1, 0, -1)
# 去除非目标物
result = cv2.bitwise_and(img, img, mask=mask)
# 显示结果
cv2.imshow('Result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个示例代码中,我们首先读取了一张图像并将其转换为灰度图像,然后设定了一个阈值并进行了二值化操作。接着,我们使用了形态学操作中的开运算去除了一些噪点。然后,我们使用轮廓检测找到了图像中的所有轮廓,并根据设定的面积阈值去除了非目标物。最后,我们使用了按位与操作将目标物从原图像中提取出来并进行显示。
需要注意的是,这只是一个示例代码,具体的阈值、形态学操作和面积阈值等参数需要根据具体的应用进行调整。