You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将通过OpenCV calcHist生成的两个一维直方图合并为一个?

合并OpenCV一维直方图的几种方法

嘿,我来帮你搞定这个问题!你现在用calcHist生成了两个一维直方图g_hist和r_hist,它们都是256行1列的单通道Mat(数据类型默认是float)。要把它们合并,有几种常用的方式,你可以根据自己的需求来选:

1. 横向拼接(生成256×2的单通道Mat)

这种方式会把两个直方图并排放在一起,形成一个每行包含两个直方图对应位置数值的矩阵,适合对比同一位置的数值:

Mat combined_hist;
hconcat(g_hist, r_hist, combined_hist);

2. 纵向拼接(生成512×1的单通道Mat)

如果想把两个直方图的数值首尾相接,变成一个更长的一维数组,就用纵向拼接:

Mat combined_hist;
vconcat(g_hist, r_hist, combined_hist);

3. 合并为多通道Mat(生成256×1的2通道Mat)

要是你想把两个直方图作为独立的通道保留,生成一个多通道的矩阵,可以用merge函数:

vector<Mat> hist_vector;
hist_vector.push_back(g_hist);
hist_vector.push_back(r_hist);
Mat combined_hist;
merge(hist_vector, combined_hist);

小提示

不管用哪种方式,合并前要确保两个直方图的数据类型一致(你的情况里都是calcHist输出的float类型,所以没问题),否则可能会报错哦。

内容的提问来源于stack exchange,提问作者user7303261

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:54:02