[OpenCV+VS2015]火焰检测算法(HSI判据)
1 HSI模型和简介
别人的宝藏文章 :https://blog.youkuaiyun.com/qq_27569955/article/details/51531460
模型,还有RGB转HSI的关系这里面的介绍都很棒,我从中受益匪浅
2 代码
#include <opencv2\opencv.hpp>
#include <iostream>
#include <math.h>
using namespace cv;
using namespace std;
double Judge(double in);
void RGBtoHIS(Mat& image_input, Mat& image_output);
void DrawFire(Mat &inputImg, Mat foreImg);
void FireDetection(Mat &image_input, Mat &image_output);
int main(int argc, char** argv) {
Mat src = imread("E:\\vs_work\\firedetection\\8.jpg");
Mat dst;
FireDetection(src, dst);
imshow("original picture", src);
imshow("convert picture", dst);
//imwrite("E:\\vs_work\\result\\10_binary_image.jpg", dst);
//imwrite("E:\\vs_work\\result\\10_Detect_Fire.jpg", src);
waitKey(0);
return 0;
}
void FireDetection(Mat &image_input, Mat &image_output)
{
image_output = Mat::zeros(image_input.size(), CV_8UC1); //初始化output矩阵
Mat image_middle;
if (image_input.empty()) {
printf("could not load image...please try again!/n ");
}
if (image_output.empty() || image_output.channels() != 1) {
printf("could not initialize output...please try again!/n ");
}
/*初始化程序报错*/
RGBtoHIS( image_input, image_middle);
for (int i = 0; i < image_middle.row