之前做研电赛项目,想加一个简单的火焰识别功能。我本身不会OPENCV所以太难的思路很难实现,忘记在哪里最后找到这段代码,非常感谢TA。
我再次基础上将其部署到ROS机器人中,简单实现了通过机器人摄像头获取到的视频流实现火焰识别。源码我放在下边。
这一段代码是我修改过后用来测试的,直接识别本地保存的火焰图片,并用绿框 框住,作为一个展示。
import cv2
import numpy as np
# import cv2
# import numpy as np
# def video_demo():
# capture = cv2.VideoCapture(0)#0为电脑内置摄像头
# while(True):
# ret, frame = capture.read()#摄像头读取,ret为是否成功打开摄像头,true,false。 frame为视频的每一帧图像
# frame = cv2.flip(frame, 1)#摄像头是和人对立的,将图像左右调换回来正常显示。
# cv2.imshow("video", frame)
# c = cv2.waitKey(50)
# if c == 27:
# break
# video_demo()
# cv2.destroyAllWindows()
# 读取图像
# image = cv2.imread('fire_image.jpg')
image = cv2.imread('4.png')
# 转换到HSV颜色空间
hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
# 定义火焰在HSV空间中的颜色阈值
lower_red = np.array([0, 100, 100])
upper_red = np.array([10, 255, 255])
# 应用颜色阈值
mask = cv2.inRange(hsv_image, lower_red, upper_red)
# 形态学操作:膨胀和腐蚀
kernel =