代码

#include <iostream>
#include <vector>
#include <opencv2/opencv.hpp>

#define ERROR_OUT__ std::cerr<<"[ERROR][File:"<<__FILE__<<"][Line:"<<__LINE__<<"]"

#ifndef _DEBUG
#define TB__(A) int64 A; A = cv::getTickCount()
#define TE__(A) std::cout << #A << " : " << 1.E3 * double(cv::getTickCount() - A)/double(cv::getTickFrequency()) << "ms" << std::endl
#else
#define TB__(A)
#define TE__(A)
#endif

class Print{
public:
    static void min_max_loc(cv::Mat &src){
        std::vector<cv::Mat> mats;
        cv::split(src, mats);
        for (size_t c = 0; c < mats.size(); c++){
            double min_val, max_val;
            cv::Point min_loc, max_loc;
            cv::minMaxLoc(mats[c], &min_val, &max_val, &min_loc, &max_loc);
            printf("channel %d, minv %6.6f, maxv %6.6f, minl [%6d, %6d], maxl [%6d, %6d]\n", \
                c, min_val, max_val, min_loc.x, min_loc.y, max_loc.x, max_loc.y);
        }
    }
};

int main(){
    cv::Mat image, cielab, cielabf;
    image.create(720, 1280, CV_8UC3);
    TB__(__randomu);
    cv::randu(image, cv::Scalar::all(0), cv::Scalar::all(256));
    TE__(__randomu);

    // warming up
    cv::cvtColor(image, cielab, CV_BGR2Lab);
    TB__(__bgr2lab_8UC3);
    cv::cvtColor(image, cielab, CV_BGR2Lab);
    cielab.convertTo(cielabf, CV_32FC3);
    TE__(__bgr2lab_8UC3);
    Print::min_max_loc(cielabf);

    image.convertTo(image, CV_32FC3, 1. / 255.);
    // warming up
    cv::cvtColor(image, cielabf, CV_BGR2Lab);
    TB__(__bgr2lab_32FC3);
    cv::cvtColor(image, cielabf, CV_BGR2Lab);
    TE__(__bgr2lab_32FC3);

    Print::min_max_loc(cielabf);

    return 0;
}

测试平台及输出

CPU : i5-4590 @3.3GHz

输出:

__randomu : 2.13923ms
__bgr2lab_8UC3 : 5.99754ms
channel 0, minv 0.000000, maxv 255.000000, minl [   460,    420], maxl [   410,    106]
channel 1, minv 42.000000, maxv 226.000000, minl [   170,     27], maxl [  1260,     43]
channel 2, minv 20.000000, maxv 222.000000, minl [    61,    223], maxl [   640,     10]
__bgr2lab_32FC3 : 17.1545ms
channel 0, minv 0.019787, maxv 99.877167, minl [   460,    420], maxl [   410,    106]
channel 1, minv -86.124870, maxv 97.908821, minl [   826,    581], maxl [   181,    276]
channel 2, minv -107.861755, maxv 94.271385, minl [   520,    399], maxl [   839,     96]

OpenCV RGB2LAB执行效率测试的更多相关文章

  1. Python执行效率测试模块timei的使用方法与与常用Python用法的效率比较

    timeit模块用于测试一段代码的执行效率 1.Timer类 Timer 类: __init__(stmt="pass", setup="pass", time ...

  2. 如何测试sql语句性能,提高执行效率

    有时候我们经常为我们的sql语句执行效率低下发愁,反复优化后,可还是得不到提高 那么你就用这条语句找出你sql到底是在哪里慢了 示例: SET STATISTICS io ON        SET ...

  3. 测试sql语句性能,提高执行效率

    为了让您的程序执行的效率更高,SQL的效率一定不可忽视. 现有以下方法去检测SQL的执行效率. 对于多表查询的效率测试: )直接from ,where方式. SET STATISTICS io ON ...

  4. php中使用mysqli和pdo扩展,测试mysql数据库的执行效率。

    <?php /** * 测试pdo和mysqli的执行效率 */ header("Content-type:text/html;charset=utf-8"); //通过pd ...

  5. 用 console.time()和 console.timeEnd() 测试你的 javascript 代码执行效率

    无意中学习到了一种测试 javascript 代码执行效率的一种方法,就记下来便于以后使用,用到了console对象中的  time  和  timeEnd  方法 . console.time('m ...

  6. 巧用getdate()测试你的sql执行效率

    在开发项目的过程中,我们会遇到各种各样的问题,有时候由于业务逻辑复杂,我们写的sql语句会很长很长,甚至会嵌套很多层,这个时候我就会担心sql执行时间会不会太长了?会不会有什么问题导致执行效率变慢?经 ...

  7. SQL Server SQL性能优化之--通过拆分SQL提高执行效率,以及性能高低背后的原因

    复杂SQL拆分优化 拆分SQL是性能优化一种非常有效的方法之一, 具体就是将复杂的SQL按照一定的逻辑逐步分解成简单的SQL,借助临时表,最后执行一个等价的逻辑,已达到高效执行的目的 一直想写一遍通过 ...

  8. SQL执行效率和性能测试方法总结

    对于做管理系统和分析系统的程序员,复杂SQL语句是不可避免的,面对海量数据,有时候经过优化的某一条语句,可以提高执行效率和整体运行性能.如何选择SQL语句,本文提供了两种方法,分别对多条SQL进行量化 ...

  9. 优化javaScript代码,提高执行效率

    今天看完书,总结了一下可以如何优化 JavaScript . 1.合并js文件 为优化性能,可以把多个js文件(css文件也可以)合并成极少数大文件.跟十个5k的js文件相比,合并成一个50k的文件更 ...

随机推荐

  1. 关于require.js的模块化开发

      先是自己打了一些demo,然后回过头来看阮大神的博客,感觉很多莫名其妙的问题,瞬间解决了:很舒服,放上链接,希望对其他人也有帮助:     先是在html的末尾引入了require.js . da ...

  2. linux下使用crontab定时执行脚本

    使用crontab定时执行脚本 cron服务是一个定时执行的服务,可以通过crontab 命令添加或者编辑需要定时执行的任务: crontab –e : 修改 crontab 文件,如果文件不存在会自 ...

  3. 计蒜客NOIP模拟赛6 D1T1Diamond-square

    Diamond-square 算法是一种能够用于生成噪声的算法,现在我们考虑这个算法的一个变种. 你有一个 2^n\times 2^n2​n​​×2​n​​ 的网格,一共有 (2^n+1)^2(2​n ...

  4. bzoj 2560: 串珠子

    Description 铭铭有n个十分漂亮的珠子和若干根颜色不同的绳子.现在铭铭想用绳子把所有的珠子连接成一个整体. 现在已知所有珠子互不相同,用整数1到n编号.对于第i个珠子和第j个珠子,可以选择不 ...

  5. ●BZOJ 2154 Crash的数字表格

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=2154 题解: 莫比乌斯反演. 题意还是很清楚的,就不赘述了. 显然有 $ANS=\sum_{ ...

  6. SAM维护的在线LCS

    题目大意: 给定两个字符串,存在三种操作,分别是在a,b串末尾加一个字符串,和询问两串的LCS 题解: Get新套路:把两串建在同一SAM上,将重合的位置合并为同一节点,再加个标记数组,如果两者的LC ...

  7. [bzoj4849][Neerc2016]Mole Tunnels

    来自FallDream的博客,未经允许,请勿转载,谢谢 貌似是省队集训女队讲的题... 今天在bzoj找一道题无果,但是翻到了这道就顺便写了下. 鼹鼠们在底下开凿了n个洞,由n-1条隧道连接,对于任意 ...

  8. hihocoder #1142 : 三分·三分求极值

    时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 这一次我们就简单一点了,题目在此: 在直角坐标系中有一条抛物线y=ax^2+bx+c和一个点P(x,y),求点P到抛物线的 ...

  9. [poj2451]Uyuw's Concert

    半平面交滴裸题,但是要求nlogn,练练手 #include<iostream> #include<cstdio> #include<cmath> #include ...

  10. 初遇 Asp.net MVC 数据库依赖缓存那些事儿

    问题背景: 最近做一个非常简单的功能,就是使用ajax请求的方式从服务端请求一段下拉表的数据. 以前也有做过这个功能,只不过这次做这个功能的时候冒出了一个想法: 我请求的这段数据它是一段相对比较固定的 ...