假设图像A和图像B,其中B是具有总体较高HSV值和较低饱和度的A的修改副本。 如何使用OpenCV报告这些差异?
实施例。输出:色调0,饱和度-25,HSV值+25。
我已经能够将bgr-images转换为hsv-images并将它们分成3个通道。 获取两个图像的每个通道的平均值并输出这些平均值的差异是一个好/正确的想法吗?或者是否有更好的或已经包含在opencv中的方式? 谢谢!
答案 0 :(得分:2)
评论中给出了答案,因此归功于Miki和Sunreef。
如果您想要示例中的结果,图像之间的正常差异将会发生(当Mats采用CV_8U格式时,使用var dataRows = new List<DataRow>();
foreach(var name in registryKey.GetSubKeyNames())
{
dataRows.Add(registryKey.DataRowInstalledApplication(name));
}
return dataRows.CopyToDataTable();
转换为CV_32F:
A.convertTo(A, CV_32F))
但是,对于非常不同的图像,这可能导致0均值差异,因此如果输出的符号(正或负变化)不相关但图像相等,请使用:
Mat diff = B - A;
Scalar mean_diff = mean(diff);