代码

#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. Hive:insert into table 与 insert overwrite table 区别

    创建测试表,来测试看看测试结果: create table test(name string,pwd string,createdate string)row format delimited fie ...

  2. POJ- 1094 Sorting It All Out---拓扑排序是否唯一的判断

    题目链接: https://vjudge.net/problem/POJ-1094 题目大意: 该题题意明确,就是给定一组字母的大小关系判断他们是否能组成唯一的拓扑序列.是典型的拓扑排序,但输出格式上 ...

  3. maven引入本地jar 打jar包

    没搭建私服的情况下引入本地的jar,并把本地jar打包进项目的run jar 以打包引入hadoop-common-2.7.5.jar为例 引用 复制jar包所在的路径 打开cmd命令提示符 切换路径 ...

  4. JS刷票神器

    var all = document.querySelectorAll('td[width="80"]'); setInterval(function(){ document.ge ...

  5. [LeetCode] Find Mode in Binary Search Tree 找二分搜索数的众数

    Given a binary search tree (BST) with duplicates, find all the mode(s) (the most frequently occurred ...

  6. 【django之Ajax】

    一.Ajax的简介 1.定义 AJAX(Asynchronous Javascript And XML)翻译成中文就是"异步Javascript和XML",是一种创建交互式网页应用 ...

  7. hosts管理工具1.0发布了。。。。

    hosts管理工具1.0发布了.... 可以快速管理hosts文件了,再也不用打开系统盘,一个目录一个目录的查找了. 快速方便的修改host文件,一键保存. 可快速注释当前行,或者取消注释当前行,只需 ...

  8. Centos常用命令之:VI

    在Linux中,对文件内容的编辑莫过去vi命令了,它是每个发布版本中的标配.并且功能强大. 在vi中一共有三种模式,一般模式(命令参照),编辑模式(命令参照)与命令模式(命令参照). ◇一般模式:当我 ...

  9. [BZOJ 2169]连边

    Description 有N个点(编号1到N)组成的无向图,已经为你连了M条边.请你再连K条边,使得所有的点的度数都是偶数.求有多少种连的方法.要求你连的K条边中不能有重边,但和已经连好的边可以重.不 ...

  10. [POJ]1279: Art Gallery

    题目大意:有一个N边形展馆,问展馆内有多少地方可以看到所有墙壁.(N<=1500) 思路:模板题,半平面交求出多边形的核后计算核的面积. #include<cstdio> #incl ...