老师布置了一个任务,说根据程序判断下摄像头有没有坏掉,让我先写两个函数做一个大概,并提出建议说比如画面出现纯色这样摄像头肯定是坏了,再比如很模糊摄像头也可能坏了,我在网上按需求搜了一下,然后自己 改了下,运行没有错误,我把代码贴出来希望对大家有帮助。
第一个是检测图片纯色的:
//图片颜色最大值与最小值之差小于3,则返回1 否则返回0 输入为灰度图
int VideoColorDetect(IplImage* src)
{
//图片高和宽
int width = src->width;
int height = src->height;
uchar *ptr = (uchar*)src->imageData;
int step = src->widthStep/sizeof(uchar);
int Iij = 0;
int Imax = 0, Imin = 255;
//遍历图片像素 取最大值,最小值
for(int i=0;i<height;i++)
{
for(int j=0;j<width;j++)
{
Iij = (int) ptr[i*step+j];
if(Iij > Imax)
Imax = Iij;
if(Iij < Imin)
Imin = Iij;
// Iave = Iave + Iij;
}
}
//判断条件 根据实际情况调试
if ((Imax-Imin)<3)
{
return 1;
}else{
return 0;
}