基于opencv烟雾图像识别代码
时间: 2023-10-03 16:06:37 浏览: 129
去雾代码vs+opencv
5星 · 资源好评率100%
以下是基于OpenCV的烟雾图像识别代码示例:
```python
import cv2
# 加载图像
img = cv2.imread('smoke.jpg')
# 转换为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 应用高斯滤波
gray = cv2.GaussianBlur(gray, (5, 5), 0)
# 应用Canny边缘检测
edges = cv2.Canny(gray, 100, 200)
# 查找轮廓
contours, hierarchy = cv2.findContours(edges, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
# 对每个轮廓进行处理
for contour in contours:
# 计算轮廓面积
area = cv2.contourArea(contour)
# 过滤面积小于一定值的轮廓
if area < 1000:
continue
# 近似轮廓
approx = cv2.approxPolyDP(contour, 0.02 * cv2.arcLength(contour, True), True)
# 如果近似轮廓包含4个点,则可能是烟雾区域
if len(approx) == 4:
# 绘制烟雾区域
cv2.drawContours(img, [approx], 0, (0, 255, 0), 2)
# 显示结果
cv2.imshow('Smoke detection', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个示例中,我们首先加载图像并将其转换为灰度图像。然后,我们应用高斯滤波和Canny边缘检测来检测图像中的边缘。接下来,我们使用findContours()函数查找轮廓,并使用contourArea()函数计算每个轮廓的面积。我们过滤掉面积小于一定值的轮廓,并使用approxPolyDP()函数对每个轮廓进行近似。如果近似轮廓包含4个点,则可能是烟雾区域。最后,我们使用drawContours()函数将烟雾区域绘制在原始图像上,并显示结果。
阅读全文