- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
所以我了解了如何使用 cvtColor() 将 BGR 图像转换为 YCrCb 格式,并在 OpenCV 中使用 split() 或 mixChannels() 分离不同的 channel 。但是,这些 channel 显示为灰度图像,因为它们是 CV_8UC1 Mats。
我想用颜色显示 Cb 和 Cr channel Barns image on Wikipedia .我找到了这个 solution in Matlab , 但我如何在 OpenCV 中做到这一点?
此外,mentioned solution通过“用 50% 的恒定值填充其他 channel ”来显示 Cb 和 Cr channel 。我的问题是:
这是显示 Cr Cb channel 的常用方式吗?或者显示Cr Cb channel 时有什么建议或规范吗?
最佳答案
我按照 answer 中的描述从头开始编写代码.看起来这就是您所需要的。
Mat bgr_image = imread("lena.png");
Mat yCrCb_image;
cvtColor(bgr_image, yCrCb_image, CV_BGR2YCrCb);
Mat yCrCbChannels[3];
split(yCrCb_image, yCrCbChannels);
Mat half(yCrCbChannels[0].size(), yCrCbChannels[0].type(), 127);
vector<Mat> yChannels = { yCrCbChannels[0], half, half };
Mat yPlot;
merge(yChannels, yPlot);
cvtColor(yPlot, yPlot, CV_YCrCb2BGR);
imshow("y", yPlot);
vector<Mat> CrChannels = { half, yCrCbChannels[1], half };
Mat CrPlot;
merge(CrChannels, CrPlot);
cvtColor(CrPlot, CrPlot, CV_YCrCb2BGR);
imshow("Cr", CrPlot);
vector<Mat> CbChannels = { half, half, yCrCbChannels[2] };
Mat CbPlot;
merge(CbChannels, CbPlot);
cvtColor(CrPlot, CrPlot, CV_YCrCb2BGR);
imshow("Cb", CbPlot);
waitKey(0);
至于将灰度图像转换为彩色格式,通常在这种情况下所有颜色 channel (B、G、R)都设置为一个灰度值。在以这种方式实现的 OpenCV CV_GRAY2BGR
模式中。
至于“用 50% 的常数值填充其他 channel ”,我认为这是可视化 YCbCr 和 Lab 等颜色空间的常用方法。我没有找到任何关于这种方法的文章和描述,但我认为它是由可视化目的驱动的。确实,如果我们将其他 channel 填充为零,基本上没有任何变化:我们也可以看到每个 channel 的影响,但图片看起来不太好看:
因此,这种方法的目的是使可视化更加丰富多彩。
关于OpenCV 显示彩色 Cb Cr channel ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30253719/
这可能是个愚蠢的问题,但我只想知道这样做的含义: 每当我遇到错误或我想完成一些功能流程时,我都会收到如下指令: if(err) { cb(err); // or for example r
求解释。尝试了没有粗箭头的变体,结果相同。使用 "mongodb": "^2.2.24", 下面的代码不起作用(我稍后加载了值,但它们不存在) addCollections(data, cb) {
我找到了两种使用 mongoose find() 执行查询的方法,但想知道它们是否不同: 我们什么时候应该使用: Model.find({},cb) 我们什么时候应该使用: Model.find({}
我刚刚查看了今年 ng-europe session 的一些照片,并注意到一张幻灯片,我认为它可能显示了即将推出的 Angular 2 的一些代码。请参见此处: (来源:https://plus.go
我卡住了。我不断收到相同的 cb is not a function 错误。这是我的错误: TypeError: cb 不是一个函数 我几天前才开始学习javascript,所以我很新。我只是在观看
我想使用 RTF 突出显示 RichTextBox 中的一些文本。我已经使用过\cb 和\cbpat。两者都不起作用。任何人都可以建议其他东西来突出显示 RTF 中的文本吗? 最佳答案 用这个: {\
我尝试在我下载的 angular 项目中安装 node_module,但出现此错误: npm ERR! registry error parsing json 然后我使用 npm intall npm
似乎没有关于这些功能如何工作的任何信息。我想这些是 Tampermonkey 独有的功能? 看起来它们旨在允许当前运行的 Tampermonkey 脚本之间进行通信;不断轮询 GM_Value 存储以
我的存储桶中有 s3 服务器访问日志,我正在尝试使用 lambda 函数将它们访问 AWS 上的 ElasticSearch 服务。 The example lambda function我正在使用的
我有一个在上下文代理上表示的实体,具有多个属性(例如温度、湿度等...)。我有一个 MySql 数据库,它按行保存该实体的值。因此,为了保留该信息,我必须从 cygnus 订阅。这里的问题是信息被保留
我需要将给定的彩色图片分解为三张单独的图片,以便每个颜色分量(Y、Cb、Cr)存储在一张图片中,如 here 。也许知道如何获得这三张照片 分别是 Y、Cb 或 Cr 颜色分量?通过下面的代码,我可以
我创建了一个使用nodemailer发送电子邮件的函数,但运行后我的控制台抛出了我: TypeError: cb is not a function at tryHandleCache (C:
我创建了以下方法来帮助我找到一个项目并更新另一个具有特定值的对象属性,如下所示: mergeAinBbyAttr: function(a, b, attr, val, cb) { asyn
我试图在 if 语句中获取 getId 以检查复选框是否已设置,但我不知道如何在 if 语句中定义 cb 以使其工作。 当我将 cb 声明为已提交的局部变量时,出现两个错误: The final lo
我试图在 ListView 上显示当前登录用户的仅内容帖子,但答案在这里:How to make generic ListView only show user's listing?没有解决我的问题,
我正在尝试运行使用 Metro Bundler 的现有 React Native 项目。我的操作系统是 Ubuntu 20.04,我尝试在物理 Android 设备和使用 Android Studio
幻灯片适用于图像 1-6(原始代码),但我需要显示 13 张图像。这是我所做的,并认为它会起作用,但事实并非如此。它仍然只播放前 6 张图像。 70 年代最初是 36 年代。我不知道我做错了什么/错过
我正在尝试在 JavaScript 中完成一项挑战,但我终其一生都无法弄清楚。 说明是这样说的:迭代 arr 并将其值一一传递给 cb。 提示:您将多次调用 cb(对数组中的每个值调用一次)。 不要为
cb_kwargs(python 参数列表中的一个条目)中的cb 代表什么? 我相信 kwargs 表示关键字参数。但我对 cb 没有任何想法。 最佳答案 回调,我相信。不过没必要。 关于python
我正在尝试制作一个程序来计算你无法通过 6-9-20 的包获得的最大对象数( block )(我对 python 相当陌生,我尝试使用全局和非本地但它没有' 工作)。 def nuggets(n):
我是一名优秀的程序员,十分优秀!