基于数字图像粗花里的火焰长宽比滤波代码
时间: 2023-12-15 09:05:15 浏览: 211
以下是基于数字图像粗花里的火焰长宽比滤波的代码:
```python
import cv2
import numpy as np
def flame_filter(image):
# 将图像转换为灰度图
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 二值化处理
ret, binary = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)
# 轮廓检测
contours, hierarchy = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 长宽比滤波
flame_contours = []
for contour in contours:
x, y, w, h = cv2.boundingRect(contour)
aspect_ratio = float(w) / h
if aspect_ratio > 0.2 and aspect_ratio < 1.5:
flame_contours.append(contour)
# 绘制火焰轮廓
flame_image = np.zeros(image.shape, dtype=np.uint8)
cv2.drawContours(flame_image, flame_contours, -1, (0, 0, 255), 2)
return flame_image
```
该函数接收一张图像作为输入,返回一张只包含火焰的图像。首先将输入图像转换为灰度图,并进行二值化处理。然后使用 `cv2.findContours` 检测图像中的轮廓。接下来进行长宽比滤波,将长宽比在 0.2 和 1.5 之间的轮廓筛选出来。最后在新图像中绘制筛选后的火焰轮廓。
阅读全文