opencv 学习之 亮度检测
照例,先看代码
- /******************************************************************************
- 说明:
- 检测亮度,常用方法是计算图片在灰度图上的均值和方差,当存在亮度
- 异常时,均值会偏离均值点(可以假设为128),方差也会偏小;通过计
- 算灰度图的均值和方差,就可评估图像是否存在过曝光或曝光不足。
- ******************************************************************************/
- #include "cv.h"
- #include "highgui.h"
- #include "iostream"
- #include "math.h"
- using namespace cv;
- /************************************************************************************
- *函数描述: light 计算图像的亮度
- *函数参数: image 需要计算的图片
- * cast 计算出的偏差值,小于1表示比较正常,大于1表示存在亮度异常;
- 当cast异常时,da大于0表示过亮,da小于0表示过暗
- **************************************************************************************/
- void light(IplImage * image)
- {
- IplImage * gray = cvCreateImage(cvGetSize(image), image->depth, 1);
- cvCvtColor(image, gray, CV_BGR2GRAY);
- double sum = 0;
- double avg = 0;
- CvScalar scalar;
- int ls[256];
- for(int i=0; i<256; i++)
- ls[i]=0;
- for(int i=0;i<gray->height;i++)
- {
- for(int j=0;j<gray->width;j++)
- {
- scalar = cvGet2D(gray, i, j);
- sum += (scalar.val[0] - 128);
- int x= (int)scalar.val[0];
- ls[x]++;
- }
- }
- avg = sum/(gray->height * gray->width);
- double total = 0;
- double mean = 0;
- for(int i=0;i<256;i++)
- {
- total += abs(i-128-avg)* ls[i];
- }
- mean = total/(gray->height * gray->width);
- double cast = abs(avg/mean);
- printf("light: %f\n", cast);
- if(cast>1)
- {
- if(avg>0)
- printf("light\n");
- else printf("dark\n");
- }
- }
- int main()
- {
- CvCapture * capture = cvCreateFileCapture("d:\\picture\\video.avi");
- cvNamedWindow("video", CV_WINDOW_AUTOSIZE);
- IplImage * frame;
- int count = 0;
- while(true)
- {
- count++;
- frame = cvQueryFrame(capture);
- if(!frame) break;
- cvShowImage("video", frame);
- if(!(count%10))
- {
- printf("frame : %d\n", count);
- light1(frame);
- light2(frame);
- light3(frame);
- }
- if(cvWaitKey(33)==27) break;
- }
- cvReleaseCapture(&capture);
- cvDestroyWindow("video");
- return 0;
- }
这个不难理解吧
转自:http://blog.csdn.net/u010477528/article/details/39374817
opencv 学习之 亮度检测相关推荐
- 【opencv学习】Blob检测斑点
今天学习blob的可用于斑点检测,其实这个斑点只是普通的这么叫法,专业点是的Blob是图像中共享某些共同属性(例如灰度值)的一组连接的像素. 如下图是今天检测的试验图 算法过程是: 1:Thresho ...
- opencv学习-霍夫变换-圆检测
一.霍夫变换-圆检测 圆检测对噪声比较敏感,所以首先要对图像进行均值滤波 基于效率考虑,opencv中实现霍夫变换圆检测的步骤: 1.检测边缘,发现可能的圆心 2.基于第一步的基础上从候选圆心开始计算 ...
- 使用深度学习和OpenCV的早期火灾检测系统
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 创建用于室内和室外火灾检测的定制InceptionV3和CNN架构 ...
- java OpenCV 图片清晰度、色偏和亮度检测
基于OpenCV对图片清晰度.色偏和亮度的检测(java版) 本文链接:https://blog.csdn.net/qq_34997906/article/details/87970817 由来:近期 ...
- opencv学习笔记(二):基于肤色的人手检测
opencv学习笔记(二):基于肤色的人手检测 原文:http://blog.csdn.net/wzmsltw/article/details/50849810 先写了人手的检测程序,下一步基于检测程 ...
- OpenCV学习笔记(四十六)——FAST特征点检测features2D OpenCV学习笔记(四十七)——VideoWriter生成视频流highgui OpenCV学习笔记(四十八)——PCA算
OpenCV学习笔记(四十六)--FAST特征点检测features2D 特征点检测和匹配是计算机视觉中一个很有用的技术.在物体检测,视觉跟踪,三维常年关键等领域都有很广泛的应用.这一次先介绍特征点检 ...
- OpenCV学习笔记(二十六)——小试SVM算法ml OpenCV学习笔记(二十七)——基于级联分类器的目标检测objdect OpenCV学习笔记(二十八)——光流法对运动目标跟踪Video Ope
OpenCV学习笔记(二十六)--小试SVM算法ml 总感觉自己停留在码农的初级阶段,要想更上一层,就得静下心来,好好研究一下算法的东西.OpenCV作为一个计算机视觉的开源库,肯定不会只停留在数字图 ...
- OpenCV学习——轮廓检测
前言 轮廓检测是传统视觉中非常常用的功能,这里简单记录一下opencv中的轮廓检测算法使用方法,至于理论,后续有机会再去细品. 国际惯例: OpenCV官方的轮廓检测教程python版 OpenCV中 ...
- OpenCV学习(二十四 ):角点检测(Corner Detection):cornerHarris(),goodFeatureToTrack()
OpenCV学习(二十四 ):角点检测(Corner Detection):cornerHarris(),goodFeatureToTrack() 参考博客: Harris角点检测原理详解 Harri ...
- 深度学习之人脸检测实践-现有框架实现 opencv Face++
人脸检测通常是人脸识别等复杂任务的第一步操作,目前主流的人脸检测算法:https://zhuanlan.zhihu.com/p/24816781.这里主要记录一些常用的算法实践,目前只有OpenCV提 ...
最新文章
- shell脚本批量追踪ip路由走向
- 安装PHP可能会出现的错误
- Vue中bus的使用
- windows的bpython安装方法以及数据库报错--记录
- 最大公约数与最小公倍数问题
- ubuntu无法安装usb驱动
- Cglib 如何实现多重代理?
- python中、既可以将数据通过print_整理了8个Python中既冷门又实用的技巧
- CF16E Fish(状压+期望dp)
- Atitit 查询优化器的流程attilax总结
- win10分屏快捷键无法使用_win10分屏快捷键如何使用
- ZPL 打印条码、二维码及小票(中文/汉字),生成条码、二维码图片【Asp.Net】-含示例代码
- Android实现图片OCR功能
- Pycharm一直卡在Uploading PyCharm helpers
- Arduino智能物流小车各部分功能代码详解(省工程训练能力综合竞赛)
- 软件包应用分享|基于RT-Thread的百度语音识别(二)
- Android手机无法使用google地图的问题的解决方案
- 九天揽月带你玩转Ardupilot 的EKF2纸老虎
- C# AForge的简单使用
- mac下脚本自动安装brew
热门文章
- STL 关联容器的lower_bound()和upper_bound()
- 每天一道剑指offer-栈的压入,弹出序列
- linux删除系统日志文件,Linux不小心删除日志文件syslog的解决方法
- unity如何得到所有子对象_Unity中获取多级子父节点的对象的两种方式
- pcb 布线电容 影响延时_浅谈PCB布局布线对TVS防护效果的影响
- 数据结构二叉树的建立代码_二叉树就是这么简单
- python preference界面设置_Android设置界面5分钟搞定--Preferences的使用
- 23. Django进阶:Django发送邮件
- JavaWeb:XML
- Cesium:实现漫游飞行