OpenCV RGB2LAB执行效率测试
代码
#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执行效率测试的更多相关文章
- Python执行效率测试模块timei的使用方法与与常用Python用法的效率比较
timeit模块用于测试一段代码的执行效率 1.Timer类 Timer 类: __init__(stmt="pass", setup="pass", time ...
- 如何测试sql语句性能,提高执行效率
有时候我们经常为我们的sql语句执行效率低下发愁,反复优化后,可还是得不到提高 那么你就用这条语句找出你sql到底是在哪里慢了 示例: SET STATISTICS io ON SET ...
- 测试sql语句性能,提高执行效率
为了让您的程序执行的效率更高,SQL的效率一定不可忽视. 现有以下方法去检测SQL的执行效率. 对于多表查询的效率测试: )直接from ,where方式. SET STATISTICS io ON ...
- php中使用mysqli和pdo扩展,测试mysql数据库的执行效率。
<?php /** * 测试pdo和mysqli的执行效率 */ header("Content-type:text/html;charset=utf-8"); //通过pd ...
- 用 console.time()和 console.timeEnd() 测试你的 javascript 代码执行效率
无意中学习到了一种测试 javascript 代码执行效率的一种方法,就记下来便于以后使用,用到了console对象中的 time 和 timeEnd 方法 . console.time('m ...
- 巧用getdate()测试你的sql执行效率
在开发项目的过程中,我们会遇到各种各样的问题,有时候由于业务逻辑复杂,我们写的sql语句会很长很长,甚至会嵌套很多层,这个时候我就会担心sql执行时间会不会太长了?会不会有什么问题导致执行效率变慢?经 ...
- SQL Server SQL性能优化之--通过拆分SQL提高执行效率,以及性能高低背后的原因
复杂SQL拆分优化 拆分SQL是性能优化一种非常有效的方法之一, 具体就是将复杂的SQL按照一定的逻辑逐步分解成简单的SQL,借助临时表,最后执行一个等价的逻辑,已达到高效执行的目的 一直想写一遍通过 ...
- SQL执行效率和性能测试方法总结
对于做管理系统和分析系统的程序员,复杂SQL语句是不可避免的,面对海量数据,有时候经过优化的某一条语句,可以提高执行效率和整体运行性能.如何选择SQL语句,本文提供了两种方法,分别对多条SQL进行量化 ...
- 优化javaScript代码,提高执行效率
今天看完书,总结了一下可以如何优化 JavaScript . 1.合并js文件 为优化性能,可以把多个js文件(css文件也可以)合并成极少数大文件.跟十个5k的js文件相比,合并成一个50k的文件更 ...
随机推荐
- Spring(五):Spring&Struts2&Hibernate整合后,实现查询Employee信息
背景: 基于之前两篇文章<Spring(三):Spring整合Hibernate>.<Spring(四):Spring整合Hibernate,之后整合Struts2>,了解了如 ...
- hdu1052 Tian Ji -- The Horse Racing---田忌赛马贪心
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1052 题目大意: 田忌和齐王各有N匹马,判断怎样比赛,使田忌净胜场数最多. 思路: 一开始贪心出错, ...
- spring boot 系列之三:spring boot 整合JdbcTemplate
前面两篇文章我们讲了两件事情: 通过一个简单实例进行spring boot 入门 修改spring boot 默认的服务端口号和默认context path 这篇文章我们来看下怎么通过JdbcTemp ...
- ansible+packer+terraform在aws上布署web服务器
各工具所扮演的角色 ansible: 配合packer生成安装有apache的基础镜像 packer: 生成amazon AMI terraform: 以packer生成的镜像为基础,布署web服务器 ...
- 使用NPOI-创建Excel
这里简单的使用一下NPOI ,什么是NPOI? 既然你已经在需要使用了,就一定知道NPOI是干什么用的了. 开始正题吧. 我用控制台程序来给大家演示一下: 一.创建控制台程序 自行脑补 二.添加NPO ...
- 给工作添点乐趣--- 为Idea编译时打印图案
控制台输出图案--banner 之前用vs开发时,也可以自己设置编译时控制台打印出的图案,我们管它叫banner. 给idea设置banner 先见一下效果图 还有重磅的 好了.其实设置这个很简单.分 ...
- SpringMVC之数据传递二
上一篇学习了从url或view中传数据到Controller中,今天学习下数据从Controller传到view中,主要有4种. 一.ModelAndView 处理方法返回值类型为 ModelAndV ...
- [LeetCode] Accounts Merge 账户合并
Given a list accounts, each element accounts[i] is a list of strings, where the first element accoun ...
- NOIP 2007树网的核
题目描述 设T=(V, E, W) 是一个无圈且连通的无向图(也称为无根树),每条边到有正整数的权,我们称T为树网(treebetwork),其中V,E分别表示结点与边的集合,W表示各边长度的集合,并 ...
- ●BZOJ 4566 [Haoi2016]找相同字符
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=4566题解: 广义后缀自动机 对两个串同时建立一个广义后缀自动机. 同时统计出每个状态对两个串 ...