#include "cv.h"
#include "highgui.h"
#include <stdio.h>
#include <string.h>
#include <math.h>
int main(int argc,char** argv)
{
//变量定义
IplImage *image=0,*img=0, *yuv=0;
int i,j;
int height,width,step,channels;
uchar* data;
//CvMat* pFrMat=NULL;
CvScalar scalar1;
int VECT=0;//阈值参数设为35
char* filename=argc==2?argv[1]:(char*)"fire2.jpg";
//读入图像
image=cvLoadImage(filename,-1);
if(!image) printf("Could not load image file\n");
yuv=cvCreateImage(cvGetSize(image),8,3);
img=cvCreateImage(cvGetSize(image),8,3);
//创建窗口,显示源图像
cvNamedWindow("SourceImage",CV_WINDOW_AUTOSIZE);
cvNamedWindow("ResultImage",CV_WINDOW_AUTOSIZE);
cvShowImage("SourceImage",image);
//转化为YCrCb空间,获取图像信息
cvCvtColor(image,yuv,CV_BGR2YCrCb);
height = yuv->height;
width = yuv->width;
step = yuv->widthStep;
channels = yuv->nChannels;
data = (uchar *)yuv->imageData;
printf("Processing a %dx%d image with %d channels\n",height,width,channels);
/************************测试得顺序为YCrCb*********************************
/*
IplImage *plane0=0,*plane1=0,*plane2=0;
plane0=cvCreateImage(cvGetSize(image),8,1);
plane1=cvCreateImage(cvGetSize(image),8,1);
plane2=cvCreateImage(cvGetSize(image),8,1);
cvCvtPixToPlane(yuv,plane0,plane1,plane2,0);
cvNamedWindow("Image0",CV_WINDOW_AUTOSIZE);
cvNamedWindow("Image1",CV_WINDOW_AUTOSIZE);
cvNamedWindow("Image2",CV_WINDOW_AUTOSIZE);
cvShowImage("Image0",plane0);
cvShowImage("Image1",plane1);
cvShowImage("Image2",plane2);
cvWaitKey();
cvDestroyWindow("Image0");
cvDestroyWindow("Image1");
cvDestroyWindow("Image2");
*/
//求YCrCb三量的均值
scalar1=cvAvg(yuv);//scalar1.val[0]是y通道均值,scalar1.val[1]是Cr通道均值
for(i=0;i<height;i++) for(j=0;j<width;j++)
{
if(data[i*step+j*channels+0]>data[i*step+j*channels+2]&&data[i*step+j*channels+0]>scalar1.val[0]&&\
data[i*step+j*channels+1]>data[i*step+j*channels+2]&&data[i*step+j*channels+1]>scalar1.val[1]&&\
data[i*step+j*channels+2]<scalar1.val[2]&&fabs(data[i*step+j*channels+1]-data[i*step+j*channels+2])>VECT)
// if(data[0]>data[2] && data[0]>scalar1.val[0] && data[1]>data[2] && data[1]>scalar1.val[1] && data[2]<scalar1.val[2] && abs(data[1]-data[2])>VECT)
{
img->imageData[i*img->widthStep+j*img->nChannels+0]=255;
img->imageData[i*img->widthStep+j*img->nChannels+1]=255;
img->imageData[i*img->widthStep+j*img->nChannels+2]=255;
}
else
{
img->imageData[i*img->widthStep+j*img->nChannels+0]=0;
img->imageData[i*img->widthStep+j*img->nChannels+1]=0;
img->imageData[i*img->widthStep+j*img->nChannels+2]=0;
}
}
cvShowImage("ResultImage",img);
cvWaitKey();
cvDestroyWindow("SourceImage");
cvDestroyWindow("ResultImage");
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
firedetectImage.rar (27个子文件)
firedetectImage
firedetect.plg 2KB
Release
fire6.jpg 17KB
colordetect.cpp 3KB
fire8.jpg 16KB
fire4.jpg 36KB
picture.jpg 429KB
firedetect.dsw 526B
fire1.jpg 27KB
fire5.jpg 34KB
firedetect.dsp 4KB
firedetect.opt 53KB
fire1.avi 5.64MB
Thumbs.db 50KB
fire.jpg 174KB
fire3.jpg 44KB
fire9.jpg 16KB
Debug
firedetect.pch 3.94MB
colordetect.sbr 0B
firedetect.bsc 2.02MB
firedetect.ilk 206KB
firedetect.exe 196KB
vc60.idb 177KB
vc60.pdb 108KB
firedetect.pdb 457KB
colordetect.obj 15KB
fire2.jpg 42KB
fire7.jpg 154KB
共 27 条
- 1
woaixingxingyueliang
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
- 5
- 6
前往页