LAB颜色空间各通道的取值范围
简介
LAB颜色空间在计算机视觉中经常被使用,知道L,A,B三个通道的取值范围有一定的意义。
OpenCV获取LAB取值范围
下面是一段实验代码,用于获取LAB的取值范围。
基本思路是,排列组合所有RGB可能,然后转变成LAB,在所得LAB中求取最大最小值。
#include <iostream>
#include <vector>
using namespace std;
#include <opencv2/opencv.hpp>
using namespace cv;
int main(int argc, char** argv){
Mat img(256, 256, CV_32FC3);
vector<float> pv(256);
// pixel color is in [0.f, 1.f];
for (int t = 0; t < 256; t++){
pv[t] = t / 255.f;
}
Mat img_lab;
vector<Mat> mv;
float min_l = FLT_MAX, max_l = FLT_MIN;
float min_a = FLT_MAX, max_a = FLT_MIN;
float min_b = FLT_MAX, max_b = FLT_MIN;
for (int c1 = 0; c1 < 256; c1++){
for (int c2 = 0; c2 < 256; c2++){
for (int c3 = 0; c3 < 256; c3++){
img.at<Vec3f>(c2, c3) = Vec3f(pv[c1], pv[c2], pv[c3]);
}
}
cvtColor(img, img_lab, CV_BGR2Lab);
cv::split(img_lab, mv);
double min_val, max_val;
cv::Point min_loc, max_loc;
cv::minMaxLoc(mv[0], &min_val, &max_val, &min_loc, &max_loc); // L
if (min_l > min_val) min_l = min_val;
if (max_l < max_val) max_l = max_val;
cv::minMaxLoc(mv[1], &min_val, &max_val, &min_loc, &max_loc); // A
if (min_a > min_val) min_a = min_val;
if (max_a < max_val) max_a = max_val;
cv::minMaxLoc(mv[2], &min_val, &max_val, &min_loc, &max_loc); // B
if (min_b > min_val) min_b = min_val;
if (max_b < max_val) max_b = max_val;
imshow("test", img);
waitKey(10);
cout << "step : " << c1 << endl;
}
cout << "L [" << min_l << ", " << max_l << "]" << endl;
cout << "A [" << min_a << ", " << max_a << "]" << endl;
cout << "B [" << min_b << ", " << max_b << "]" << endl;
return 0;
}
LAB颜色空间各通道的取值范围的更多相关文章
- Lab颜色空间
原文:http://blog.csdn.net/carson2005/article/details/7200440 同RGB颜色空间相比,Lab是一种不常用的色彩空间.它是在1931年国际照明委员会 ...
- 【js jQuery】map集合 循环迭代取值---以及 map、json对象、list、array循环迭代的方法和区别
后台给前台传来一个map @ResponseBody @RequestMapping(value = "getSys") public Map<Long,String> ...
- web(六)css的基本语法、取值与单位
css语法包含如下部分: 选择器:用于选择需要添加样式的元素. 属性(property):样式的属性名称,例如color代表颜色. 取值与单位:属性对应的值以及单位. 语法规则:css的某些固定语法. ...
- 如何解决流程开发中SheetRadioButtonList页面取值问题
分享一个常见的取值问题. 应用场景: SheetRadioButtonList控件,点击其中一项执行事件操作.如果是页面加载的情况下,值就无法取到. 具体原因如下: 我给SheetRadioButto ...
- jQuery radio的取值与赋值
取值: $("input[name='radioName']:checked").val(); 赋值: $("input[name='radioName'][value= ...
- python通过函数改变变量取值
严格讲应该是"通过函数调用,改变引用对象".python中,要区分"变量名"和"对象" 如果是类的对象,是引用类型的,那么可以通过函数调用, ...
- jsf初学selectOneMenu 绑定与取值
jsf 的selectOneMenu 最后生成的<select>标签.这里涉及到一个binding 起初一直不知道是干嘛的,后来参考了其他文章.就相当于在asp.net 中如:<as ...
- CYQ.Data 快速开发之UI(赋值、取值、绑定)原理
昨夜园子猴子问了几个我CYQ.Data使用的小问题,经过简单解答后,他表示“妈妈再也不用担心我的学习",并于事后以资鼓励,希望这框架越走越好. 除了技术上的交流,双方在生活,S上面的问题上也 ...
- EditText的inputType常用取值
最近经过实际试验,总结了InputType几个常用取值表示的含义: 1.none, text, textVisiblePassword: 无任何输入限制 2.textMultiLine: 允许多行输入 ...
随机推荐
- 使用控制台调试WinForm窗体程序
.程序代码结构 .Win32DebuggerHelper.cs using System.Runtime.InteropServices; /* TODO:使用方法 Win32.AllocConsol ...
- 初探arch -小白安装arch篇
前段时间突然想试一试arch系统,电脑有点拖不动了,想想可以自己DIY自己需要的东西,就装个arch吧. 于是就马不停蹄的安装. 1.开始:用U盘制作启动盘.这里推荐低量级的制作软件USBwriter ...
- cogs 619. [金陵中学2007] 传话
提交地址:http://cojs.tk/cogs/problem/problem.php?pid=619 619. [金陵中学2007] 传话 ★☆ 输入文件:messagez.in 输出文件 ...
- [SDOI2017]新生舞会
Description 学校组织了一次新生舞会,Cathy作为经验丰富的老学姐,负责为同学们安排舞伴.有n个男生和n个女生参加舞会 买一个男生和一个女生一起跳舞,互为舞伴.Cathy收集了这些同学之间 ...
- 洛谷4月月赛R1
T1.题目大意:n个人站成一排,有m个团队,每个人有且属于一个团队,可以让若干个人出队,任意交换这些人的位置后再站回去,问要让所有同一团队的人连续地站在一起,至少要出队几个.(n<=10^5,m ...
- 【网络流问题·我就想建好模】
·为了有助于你读后文,在写题前先列出一些大米饼的代码习惯: 一个提醒:所有的ADD函数无特殊说明均如图:(没有w就直接跳过) 以及: go(i,a,b)=====for(int i=a;i<=b ...
- [bzoj4815]: [Cqoi2017]小Q的表格
来自FallDream的博客,未经允许,请勿转载,谢谢. 小Q是个程序员. 作为一个年轻的程序员,小Q总是被老C欺负,老C经常把一些麻烦的任务交给小Q来处理.每当小Q不知道如何解决时,就只好向你求助. ...
- Android技术分享-文字转语音并朗读
Android技术分享-文字转语音并朗读 最近在做一个项目,其中有一个功能是需要将文本转换成语音并播放出来.下面我将我的做法分享一下. 非常令人开心的是,Android系统目前已经集成了TTS,提供了 ...
- PHP查看本地文件夹及删除文件夹操作
查看文件夹(包括文件夹内所有的文件夹和文件) function descdir($dir){ if(is_dir($dir)){ if($dh=opendir($dir)){ while(($file ...
- Thinkphp中的A 函数(Thinkphp3.2.3版本)
A函数是TP中实例化控制器的一个快捷函数,它的语法结构如下: A('模块/控制器') //当控制器层名称不是 Controller 时须这样写 A('模块/控制器','控制器层名称') 如果要调用的控 ...