LAB颜色空间各通道的取值范围
2015-08-28 16:16
225 查看
简介
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; }
相关文章推荐
- zzuli OJ 1046: 奇数的乘积
- Linux中表示“时间”的结构体和相关函数
- 使用批次优化渲染
- LAB颜色空间各通道的取值范围
- cocos2dx导出的json转c++代码
- 定向输出NSLog 到沙盒路径下
- 2015应该学习的前端语言与框架
- 获取协议名、协议号——getprotoent(),getprotobyname(),getprotobynumber()
- 手机是如何泄密个人隐私的
- 调试lib
- zzuli OJ 1045: 数值统计
- codeforces 134B B. Pairs of Numbers(枚举+辗转相除)
- MVC学习地址
- 【技术】居中(不适用于IE7及以下版本)
- 经典算法之0-1背包问题
- 很让人受教的 提高php代码质量36计
- Win10预览版10532怎么样?Win10预览版10532上手演示视频
- 文件下载兼容各种浏览器
- exfat文件系统(七)------exfat_core.c详解(一)------CLUSTER HEAP(BMAP_DENTRY_T以及相关)
- windows下使用vfw方式生成AVI视频的实现