OpenCV求解这段代码的含义

csdnmix 2016-03-25 09:44:57
我感觉是不是应该叫"A test comparing luminance and blue"?
这段代码取自《OpenCV Computer Vision Application Programming Cookbook 2nd》,书中没有说明,但随书代码里有这个。。

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>

#include <vector>

int main()
{
// A test comparing luminance and brightness

// create linear intensity image
cv::Mat linear(100,256,CV_8U);
for (int i=0; i<256; i++) {

linear.col(i)= i;
}

// split the 3 channels into 3 images
std::vector<cv::Mat> channels(3);

// create a Lab image
linear.copyTo(channels[0]);
cv::Mat constante(100,256,CV_8U,cv::Scalar(128));
constante.copyTo(channels[1]);
constante.copyTo(channels[2]);
cv::Mat image;
cv::merge(channels,image);

// convert back to BGR
cv::Mat brightness;
cv::cvtColor(image,brightness, CV_Lab2BGR);
cv::split(brightness, channels);

// create combined image
cv::Mat combined(200,256, CV_8U);
cv::Mat half1(combined,cv::Rect(0,0,256,100));
linear.copyTo(half1);
cv::Mat half2(combined,cv::Rect(0,100,256,100));
channels[0].copyTo(half2);

cv::namedWindow("Luminance vs Brightness");
cv::imshow("Luminance vs Brightness",combined);

cv::waitKey();
}
...全文
710 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2016-09-01
  • 打赏
  • 举报
回复
数值上均匀变化 和 心理上均匀变化 不是一回事
shiter 2016-08-31
  • 打赏
  • 举报
回复
请问楼主找到解决方案了吗,找到的话记得回来分享,and,结贴
shiter 2016-03-26
  • 打赏
  • 举报
回复
运行一下啥效果?顶楼上,楼主探究一下给我们分享分享
csdnmix 2016-03-26
  • 打赏
  • 举报
回复
引用 2 楼 wangyaninglm 的回复:
运行一下啥效果?顶楼上,楼主探究一下给我们分享分享


现在也不明白Luminance和 Brightness的区别
我的理解是运行结果的上半部分和下半部分的对比可以看作是CIE L*a*b*颜色空间的L分量和RGB颜色空间的B分量的对比。
教材里说CIE L*a*b*是具有感知均匀特性的颜色表示法,而RGB颜色空间不是。
从运行结果来看,图像的每一列都是下半部分比上半部分深,下半部分深色所占的面积大,变为白色时速率比较快,而不是缓慢均匀变化的。
代码可能就想表明RGB不是感知均匀的颜色空间吧
我很菜鸟,想听听各位专业的解释
赵4老师 2016-03-25
  • 打赏
  • 举报
回复
在百度或维基百科上分别搜 luminance 和 brightness

19,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧