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();
}
...全文
703 5 打赏 收藏 转发到动态 举报
写回复
用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
    本课程分享对由中国开发者提供的OpenCV条形码识别模块的原理和代码精讲。该模块借鉴“目标识别”领域先进理念,采用“定位-识别”二段模式,有效提高了自然环境下条码识别的准确率并保持了C++代码的高速度,相比较常用的zxing和zbar在准确率和识别速度上均有较大优势。更难得可贵的是在代码的实现过程中能够注意细节,在诸如“循环测试确定参数数值”“积分图的使用”“倾斜矩形纠偏”等处,均提供了思路清晰、弹性高的优质代码。作为一套通过了OpenCV官方的代码检验、解决一个常用领域内具体问题的模块,对于图像处理学习来说是难得可贵的。    逐条进行代码解读繁琐且低效,个人认为,在图像处理领域,能够运行和修改观察的代码对于学习研究至关重要。在理论剖析部分,也是由应用引导原理。同时做好知识的迁移和代码的复用工作。在这个过程中,创建针对性的实验非常重要。 课程内容分为4个部分:一是基本配置,包括· 条形码识别模块的安装使用 (cmake配置和OpenCV编译);· 构建用于测试和代码阅读的环境;· 模块对官方数据集的测试;二是条码定位,将详细讲解思路、原理和实现知识迁移部分将简单说一下在毛发识别上的迁移:三是条码识别,该部分内容会首先梳理框架,而后具体进行分析讲解    此外,我们将结合例子,将OpenCV的基础功能,包括积分图像、形态学变化、联通区域、透视变化等进行复习,加深理解。 

19,468

社区成员

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

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