资源简介
该代码利用颜色模型去检测火焰, 分为3个模块, HSV, RGB, YCrCb 颜色空间, 根据论文定义, 设定判断的相关区间, 从而从图像中判断出火焰的位置, 对火灾的预防以及火焰的检测可以起到重要的作用. 主要采用numpy进行预处理
代码片段和文件信息
import cv2
import numpy as np
# 该算法主要提取的是火焰的轮廓信息 效果一般
def YCrCb_model():
img_file = ‘fire_img/fire_img0.jpg‘
src_img = cv2.imread(img_file)
cv2.imshow(‘src‘ src_img)
YCbCr_img = cv2.cvtColor(src_img cv2.COLOR_BGR2YCrCb)
YCbCr_img_gaussian = cv2.GaussianBlur(YCbCr_img (9 9) 0)
cv2.imshow(“1“ YCbCr_img)
cv2.imshow(“2“ YCbCr_img_gaussian)
# 火焰区域满足关系: Y(x y) > Cb(xy) Cr(xy)>Cb(xy)
y cb cr = cv2.split(YCbCr_img_gaussian)
rows cols n = YCbCr_img.shape
mean_y = np.mean(y)
mean_cr = np.mean(cr)
mean_cb = np.mean(cb)
des_img = np.zeros((rows cols) YCbCr_img.dtype)
# 计算论文中所给的待选区域颜色
bool_matrix = (y > cb) & (cr < cb)
# bool_matrix = (y > mean_y) & (cr < mean_cb) & (cr > mean_cr)
print(bool_matrix)
print(bool_matrix.shape)
des_img[bool_matrix] = 255
cv2.imshow(‘des_img‘ des_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
def HSV_model():
img_file = ‘fire_img/fire_img0.jpg‘
src_img = cv2.imread(img_file)
cv2.imshow(‘src‘ src_img)
hsv_img = cv2.cvtColor(src_img cv2.COLOR_BGR2HSV)
h s v = cv2.split(hsv_img)
rows cols n = src_img.shape
des_img = np.zeros((rows cols) src_img.dtype)
bool_matrix = (s >= 200) & (s <= 280) & (v >= 127) & (v <= 255)
print(np.max(v))
# print(v)
des_img[bool_matrix] = 255
cv2.imshow(“des“ des_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
# 利用RGB颜色区间 基本可行 目前还有除0的问题
def RGB_model():
img_file = ‘fire_img/fire_img0.jpg‘
src_img = cv2.imread(img_file)
cv2.imshow(‘src‘ src_img)
b g r = cv2.split(src_img)
r_mean = np.mean(r)
rows cols n = src_img.shape
des_img = np.zeros((rows cols) src_img.dtype)
x1 = g / (r+1)
x2 = b / (r+1)
# print(r)
# print(“******“)
# print(r+1)
#
# for m in r+1:
# for n in m:
# if n == 0:
# pass
# print(‘fuck‘)
bool_matrix = (r > r_mean) & (r > g) & (g > b) & (x1 >= 0.25) & (x1 <= 0.65) & (x2 >= 0.05) & (x2 <= 0.45)
des_img[bool_matrix] = 255
# image contours hierarchy = cv2.findContours(des_img cv2.RETR_TREE cv2.CHAIN_APPROX_SIMPLE)
image contours hierarchy = cv2.findContours(des_img cv2.RETR_EXTERNAL cv2.CHAIN_APPROX_NONE)
src_img = cv2.drawContours(src_img contours -1 (0 255 0) 3)
cv2.imshow(“des“ des_img)
cv2.imshow(“6“ src_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
if __name__ == ‘__main__‘:
# YCrCb_model()
# RGB_model()
HSV_model()
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2804 2019-04-12 11:47 demo2_flamex.py
目录 0 2019-04-13 11:50 参考文献\
文件 1794194 2019-04-03 12:15 参考文献\fastrcnn火焰检测.pdf
文件 2647829 2019-04-03 21:13 参考文献\基于GMM与三维LBP纹理的视频火焰检测_严云洋.pdf
文件 1204152 2019-04-03 21:13 参考文献\基于图像处理的嵌入式火焰检测系统_宋孟华.pdf
文件 2044326 2019-04-03 21:13 参考文献\基于多特征的火灾监控系统设计_卢鑫.pdf
文件 1818178 2019-04-03 21:13 参考文献\基于融合特征与支持向量机结合的火焰检测_熊昊.pdf
文件 1873066 2019-04-03 21:13 参考文献\大空间图像型火焰检测方法研究_亓文杰.pdf
评论
共有 条评论