精华内容
下载资源
问答
  • 下面代码计算了图片的平均亮度和亮度的标准差 思路:灰度就当作是亮度。平均亮度就是每个像素的灰度相加并除以总像素。标准差公式可百度…… 还有个图片的亮度,可参考...

    环境是XP VS2010 OpencV3.1.0

    下面代码计算了图片的平均亮度和亮度的标准差

    思路:灰度就当作是亮度。平均亮度就是每个像素的灰度相加并除以总像素。标准差公式可百度……

    还有个图片的亮度,可参考https://blog.csdn.net/zhang11wu4/article/details。其他地方都是只计算算术平均。这里使用了公式。

     

    #include <iostream>
    #include <ctime>
    #include <cmath>
    
    using namespace std;
    
    #include <opencv2/core/core.hpp>
    #include <opencv2/core/utility.hpp>
    #include <opencv2/imgproc.hpp>
    #include <opencv2/highgui/highgui.hpp>
    #include "opencv2/imgproc.hpp"
    
    
    using namespace cv;
    
    
    
    
    
    //hide the local functions in an anon namespace
    /*namespace {
    	double LumAvg = 0 ;
    
    }*/
    
    double GetGrayImagAvg(cv::Mat imageSrc)
    {
    	
    	unsigned char* row_ptr;
    	unsigned char* data_ptr;
        double sum = 0;  
        double avg = 0;  
    	double lumavg = 0;
    
        if (imageSrc.type() != CV_8UC1 )
        {
            cout<<"please input a gray image."<<endl;
            return 0;
        }
        for ( size_t y=0; y<imageSrc.rows; y++ )
        {
            for ( size_t x=0; x<imageSrc.cols; x++ )
            {
                row_ptr = imageSrc.ptr<unsigned char> ( y ); 
                data_ptr = &row_ptr[ x*imageSrc.channels() ]; 
                for ( int c = 0; c != imageSrc.channels(); c++ )
                {
    				sum += data_ptr[c];
    				lumavg += log(0.0001 + data_ptr[c]);
                }
            }
        }
        // lumavg: please refer to https://blog.csdn.net/zhang11wu4/article/details/8834747
        lumavg = lumavg / (imageSrc.rows * imageSrc.cols);
        lumavg = exp(avg);
        avg = sum/(imageSrc.rows * imageSrc.cols);   
        return avg;
    }
    double GetGrayImagStandardDeviation(cv::Mat imageSrc, double GrayImagAvg)
    {
    	unsigned char* row_ptr;
    	unsigned char* data_ptr;
        double stdDvtn = 0;
        if (imageSrc.type() != CV_8UC1 )
        {
            cout<<"please input a gray image."<<endl;
            return 0;
        }
        for ( size_t y=0; y<imageSrc.rows; y++ )
        {
            for ( size_t x=0; x<imageSrc.cols; x++ )
            {
                 row_ptr = imageSrc.ptr<unsigned char> ( y ); 
                 data_ptr = &row_ptr[ x*imageSrc.channels() ];
                for ( int c = 0; c != imageSrc.channels(); c++ )
                {
    				stdDvtn += ( data_ptr[c] - GrayImagAvg )*( data_ptr[c] - GrayImagAvg );
                }
            }
        }
        stdDvtn = stdDvtn/(imageSrc.rows * imageSrc.cols);  
        stdDvtn = sqrt(stdDvtn);
        return  stdDvtn;
    }
    int main ( int argc, char** argv )
    {
    	double LumAvg;
    	double LumSd;
        cv::Mat imageLEDon, imageLEDoff, imageLEDon_rsz, imageLEDoff_rsz;
        imageLEDon = cv::imread ( "E:\\FENG\\workspace_vc10\\LED_status_detect\\Image\\l1_on.jpg" , IMREAD_GRAYSCALE);
        imageLEDoff = cv::imread ( "E:\\FENG\\workspace_vc10\\LED_status_detect\\Image\\l1_off.jpg", IMREAD_GRAYSCALE ); 
    
        if(imageLEDon.empty())
        {
    		cerr<<" image input error ."<<endl;
            return 0;
        }
        if(imageLEDoff.empty())
        {
    	cerr<<" image input error ."<<endl;
            return 0;
        }
        cout << "CV_VERSION: " << CV_VERSION << endl << endl;
    
        cv::resize(imageLEDon, imageLEDon_rsz, cv::Size(), 1, 1);
        cv::resize(imageLEDoff, imageLEDoff_rsz, cv::Size(), 1, 1);
        cout<<"imageLEDon_rsz col: "<<imageLEDon_rsz.cols<<",row: "<<imageLEDon_rsz.rows<<",channel: "<<imageLEDon_rsz.channels()<<endl;
        cout<<"imageLEDoff_rsz col:"<<imageLEDoff_rsz.cols<<",row: "<<imageLEDoff_rsz.rows<<", channel: "<<imageLEDoff_rsz.channels()<<endl;
    
        cv::imshow ( "imageLEDon_rsz", imageLEDon_rsz );
        cv::imshow ( "imageLEDoff_rsz", imageLEDoff_rsz );
    
    
        LumAvg = GetGrayImagAvg(imageLEDon_rsz);
        LumSd  = GetGrayImagStandardDeviation(imageLEDon_rsz, LumAvg);
        cout<<"imageLEDon_rsz LumAvg:  "<< LumAvg << endl;
        cout<<"imageLEDon_rsz LumStdDeviation:  "<< LumSd << endl<< endl;
    
        LumAvg = GetGrayImagAvg(imageLEDoff_rsz);
        LumSd  = GetGrayImagStandardDeviation(imageLEDoff_rsz, LumAvg);
        cout<<"imageLEDoff_rsz LumAvg:  "<< LumAvg << endl;
        cout<<"imageLEDoff_rsz LumStdDeviation:  "<< LumSd << endl<< endl;
    
        cv::waitKey ( 0 ); 
        cv::destroyAllWindows();
        return 0;
    }
    

     

    展开全文
  • OpenCV判断亮度变化,资料网址汇总

    千次阅读 2018-07-27 18:35:07
    日前在网络搜集一些和图像亮度有关的资料,找到了一部分网址,在这里汇总一下。以便所需。 ---------------------------------------   通过OpenCV中的blur模糊 / canny边缘检测 / findCoutours查找轮廓 / ...

    日前在网络搜集一些和图像亮度有关的资料,找到了一部分网址,在这里汇总一下。以便所需。

    ---------------------------------------

     

    通过OpenCV中的blur模糊 / canny边缘检测 / findCoutours查找轮廓 / minEnclosingCircle寻找最小面积的包围圆,来跟踪LED灯的运动轨迹,也就是手写笔的书写轨迹。

     借助OpenCV库,分析区域亮度和轮廓。
     
     
     https://blog.csdn.net/fightingforcv/article/details/50931545
     opencv 学习之 亮度检测
     
     https://blog.csdn.net/donger_soft/article/details/39522599
     OpenCV获取和设置图像的平均亮度
     
     https://blog.csdn.net/zhang11wu4/article/details/8834747
     图像平均亮度公式
     
     https://blog.csdn.net/carl2380/article/details/5872720
     根据RGB计算亮度
     
     https://blog.csdn.net/sinat_36420785/article/details/73744382
     计算图像亮度
     
     https://blog.csdn.net/jiazhen/article/details/52086173
     OPENCV统计比较图像亮度
     
     https://blog.csdn.net/fightingforcv/article/details/52725520
     opencv 学习之 图像色偏、清晰度、亮度检测
     
     https://blog.csdn.net/fightingforcv/article/details/50931545?locationNum=4&fps=1
     opencv 学习之 亮度检测
     
     http://lib.csdn.net/article/opencv/28298
     视频清晰度、色偏以及亮度异常检测
     
     https://blog.csdn.net/luoyouren/article/details/53856441
     图像识别(7)——静态图片识别LED灯+Canny阈值调节+圆心打点
     
     https://blog.csdn.net/bcbobo21cn/article/details/50867086
     opencv颜色识别学习总结

     

    https://pan.baidu.com/s/1mgt6YQ8
    火焰检测例子,VS2010的工程FireDetection_bin.rar

     

    https://blog.csdn.net/xiao_lxl/article/details/43307993

    OpenCV小例程——火焰检测(完整代码)

    展开全文
  • opencv平均背景法

    2016-11-24 13:49:45
    1.将采集到的部分图片,利用OpenCV的cvAcc函数累加求和,并统计累加次数,累加完成后在用cvConvertScale函数求取平均值,记为A。(注意理解该平均值的意思是在(x,y)位置处,所有参与求和计算的图像在该点出的像素...

    1.将采集到的部分图片,利用OpenCV的cvAcc函数累加求和,并统计累加次数,累加完成后在用cvConvertScale函数求取平均值,记为A。(注意理解该平均值的意思是在(x,y)位置处,所有参与求和计算的图像在该点出的像素平均值,每一点的像素平均值是不同的)

    2.前一帧图像和当前参与累加的图像求差的绝对值,利用cvAbsDiff函数,而后该绝对值图像也进行累加求平均值,记为D。(同理这是某点的差值平均值)它描述的是某点像素值得波动幅度。

    3.那么有1和2便可以认为,图像某点的像素值P若满足A-D < P < A+D,则认为此点属于背景,然而由于前景目标的加入,可能对背景点的亮度有一定的影响,故对波动幅度D进行一定的放缩,若 A -KD < p < A + KD,便认为该点为背景点。自然在该范围外的点,便是我们需要的前景点。

    展开全文
  • OpenCV获取和设置图像的平均亮度

    千次阅读 2018-01-28 17:57:16
    1. OpenCV1.0中C方式: doublegetAvg(IplImage*img) { IplImage*gray=cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,1); cvCvtColor(img,gray,CV_RGB2GRAY); CvScalarscalar=cvAvg

    1. OpenCV1.0中C方式:

    double getAvg(IplImage *img)  
    {  
        IplImage *gray = cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,1);  
        cvCvtColor(img,gray,CV_RGB2GRAY);  
        CvScalar scalar = cvAvg(gray);  
        cvReleaseImage(&gray);  
        return scalar.val[0];  
    }  
    
    void setAvg(IplImage *img,IplImage *out,double avg_gray)  
    {  
        double prev_avg_gray = get_avg_gray(img);  
        cvConvertScale(img,out,avg_gray/prev_avg_gray);  
    }  
    
    
    

     

    2. OpenCV2.0中C++方式:

    double getAvg(Mat img)  
    {
     Mat gray;
        cvtColor(img, gray, CV_RGB2GRAY);  
     Scalar scalar = mean(gray);  
        return scalar.val[0];
    }  
    
    void setAvg(Mat scr,Mat dst, double avg)  
    {  
        double fpreAvg = getAvg(scr);  
        scr.convertTo(dst,scr.type(),avg/fpreAvg);  
    }  

     

     

     

    展开全文
  • pip install opencv-python 2 获取视频属性 以下是opencv-python可以获取视频的相关信息,可以通过从0开始的序号获取 Property identifier Explanation CV_CAP_PROP_POS_MSEC 视频文件的当前位置(以毫秒为...
  • OpenCV彩色图像亮度均衡

    热门讨论 2012-05-14 20:29:07
    通过彩色图像的直方图均衡化,创建一副在整个亮度范围内具有相同分布的亮度图像。
  • RGB颜色空间 在RGB模型的立方体中, [1] - 原点对应的颜色为黑色,它的三个分量... #亮度非零的值 average_v = sum(v)/len(v) #平均亮度 #print(np.nonzero(V)) # plt.imshow(hsv) 参考链接:python -- cv2.cvtColor()
  • 使用OpenCV获取图片亮度

    千次阅读 2020-03-19 16:31:52
    1. 为何要获取图片的亮度?有哪些应用场合? 在工厂或者其他工业生产过程中,需要提取目前场景的亮度。比如,检测手机的闪光灯功能是否正常。 2. 算法实现 2.1 图象转成HSV格式 HSV(Hue, Saturation, Value)是...
  • 文章目录前言一、图像亮度和对比度的基本概念:1、图像亮度:2、图像对比度:二、RGB三通道色彩空间的图像变换:1、线性变换公式如下:2、操作简介:3、图像亮度调整:4、图像对比度调整:5、三通道图像转换为单通道...
  • 基于opencv的图像亮度异常检测

    千次阅读 2020-09-30 14:50:56
    图像亮度异常检测主要就是求一张图片的平均亮度,如果大于阈值则判断为过亮,小于阈值则判断为过暗,实际使用时可能不是对整张图片进行检测,而是只检测图片的某个区域,这时候可以根据传入的坐标对特定区域进行检测...
  • 提取亮度通道的平均值 console.time("导入类"); runtime.images.initOpenCvIfNeeded(); importClass(org.opencv.core.MatOfByte); importClass(org.opencv.core.Scalar); importClass(org.opencv.core.Point); ...
  • 图像的平均亮度

    2013-11-18 09:34:08
    基于HSV空间,逐个像素点处理图像,求图像的平均亮度
  • 亮度和对比度 对RGB色彩图像来讲,亮度越高,像素点对应的RGB值应该越大;亮度越低,像素点对应的RGB值应该越小。而对比度则是用来描述图像颜色与亮度之间的差异感知,对比度越大,图像的每个像素与周围的差异性也就...
  • OpenCV

    2019-11-11 23:30:45
    title:OpenCV time:2019年9月7日09:46:56 OpenCV基础1: 介绍 是计算机视觉开源库,主要算法设计图像处理和机器学习相关方法。 在多数图像相关的应用程序中被采用个,BSD许可,可以免费应用在商业和研究领域 ...
  • Opencv+Python 图片亮度和对比度

    万次阅读 2018-05-01 23:30:45
    调整亮度和对比度:import cv2 import numpy as np def contrast_demo(img1, c, b): # 亮度就是每个像素所有通道都加上b rows, cols, chunnel = img1.shape blank = np.zeros([rows, cols, chunnel], img1.dtype)...
  • 计算一幅图像的平均亮度

    千次阅读 2019-04-10 16:39:32
    %av是计算一幅图像的平均亮度 %A必须是一维或二维的数组,否则程序会产生错误 if ndims(A)>2 error('The dimensions of the input cannot exceed 2.') end av=sum(A(:))/length(A(:));%计算平均亮度...
  • OpenCV 分离颜色通道 图像混合 亮度对比度调整 OpenCV 分离颜色通道 图像混合 亮度对比度调整 概述 代码段 程序运行效果 效果分析 概述 读取两张图片,将一张图片插入另一张图片进行混合 将图片1的...
  • 移动平均阈值化python代码,能有效的处理被正弦亮度遮蔽的文本图像和被斑点遮蔽污染文本的图像
  • python图像质量检测:图像亮度检测 基于传统方式的图像质量检测 需求: 检测视频为是否亮度异常,此代码针对一帧图片进行检测,视频检测需要自行进行读取,并根据需求进行抽帧检测 方式: 通过计算灰度图上的均值...
  • opencv

    千次阅读 2019-06-14 19:36:42
    均值滤波器:最简单均值滤波器是局部均值运算,即每一个像素只用其局部邻域内所有值的平均值来置换. 高斯平滑滤波器是一类根据高斯函数的形状来选择权值的线性滤波器。 高斯平滑滤波器对去除服从正态分布的噪声是...
  • cv.mean(m1)#图像均值 #输出这幅图像 各个通道的的平均值 (107,25,69) cv.meanStdDev()#方差 #方差越大 图像差异性越大 方差越小图像差异越小 (也可以理解对比度越小) #如果均值和方差都是零 是无效图像 #逻辑...
  • 当存在亮度异常时,均值会偏离均值点(可以假设为128),方差也会偏小;通过计算灰度图的均值和方差,评估图像是否存在过曝光或曝光不足 int light(string imgName) { //Mat 转 IplImage Mat M= imread(imgName);...
  • 我已经使用了cap.set(10,0)来降低摄像头的亮度了,但是目前的画面还是太亮了,并且目前已经无法再进一步降低了。 所以想请问大佬们,有没有直接降低视频图像亮度的方法? 我主要是想进行蜡烛火焰识别,目前...
  • 学习opencv(1)平均背景法

    千次阅读 2013-08-09 08:39:12
    平均背景法的的基本思路是计算每个像素的平均值和标准差(或平均...当一个前景目标经过摄像机时,目标亮度相对较暗。 void cvAcc( const CvArr* image, CvArr* sum, const CvArr* mask=NULL ); 将帧叠加到累积器(a

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,273
精华内容 1,309
关键字:

opencv平均亮度